c++ - 禁用单个文件的预编译头

标签 c++ c visual-c++ cmake

我在 vs2013 上开发一个包含许多 .cpp 文件的项目,并为它们使用预编译的 header 。我正在使用 CMake 构建我的项目。

但是我有一个 .c 文件(我们称它为 xyz.c),我想为它禁用预编译头文件。

我尝试了几种方法,但如果我为所有 .cpp 文件启用预编译 header ,它也会自动为 .c 文件启用。这是我尝试过的:

set_source_files_properties (xyz.c
  PROPERTIES COMPILE_FLAGS /Y-xyz.c )

假设 /Yu 为所有文件打开,我只是尝试为 xyz.c 关闭此选项。

谁知道什么方法,请告诉我。

最佳答案

从 cmake 3.16 开始,设置 /Y- 编译器选项将不起作用。为单个文件禁用预编译头的正确方法是这样的:

set_source_files_properties(non-pch.cpp PROPERTIES SKIP_PRECOMPILE_HEADERS ON)

文档: https://cmake.org/cmake/help/v3.16/prop_sf/SKIP_PRECOMPILE_HEADERS.html

(反正用处不大)

关于c++ - 禁用单个文件的预编译头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40886738/

相关文章:

c - 了解声明 C 字符串的两种方式

c++ - 在处理特定 HWND 的消息时等待 HANDLE

c++ - 为什么在 Edmonds-Karp 最大流量中必须考虑后缘?

c++ - 你会推荐这种复制字符串的方法吗?

c++ - 从技术上讲,如何在堆栈跟踪中使 this 指针为空?

c++ - 指向不同地址的虚表和函数指针

c++ - 什么时候调用_findclose?

c - C中的线程管理

c++ - std::string 与 unordered_sets 一起使用时是否需要哈希函数?

visual-studio - 错误 MSB6006 : “cmd.exe” exited with code 2 - in Visual Studio 2010