【发布时间】:2016-09-18 19:15:24
【问题描述】:
我已经预编译了针对每个目标的头文件 stdafx.h。我的 CMake 项目大致如下所示:
include_directories(<prefix>/include_a)
include_directories(<prefix>/include_b) #<---- contains stdafx.h that should NOT be used
include_directories(<project_dir>/) #<----- contains stdafx.h that should be used
add_executable(<project_name> <sources>)
问题:我想排除作为<prefix>/include_b 目录一部分的预编译头文件。如果那不可能,则明确指定头文件。我知道gcc 支持-include 选项,但是CMake 有什么更简洁的选项可以满足我的要求吗?
【问题讨论】:
-
如果您不想强制包含文件(CMake 未明确支持;请参见例如here),我认为答案在于包含路径的顺序。隐藏在"CMake Build System: Transitive Usage Requirements" documentation 中的一个示例:请参阅“例如,如果目标的链接库必须按 lib1 lib2 lib3 的顺序指定,但包含目录...”。
-
stdafx.h闻起来像 Visual Studio,但你没有放 msvc 标签? -
@Florian 忘了更新这个,是的,事实上这就是我最终更改订单的原因。
-
@JohanBoule 是的,因为我正在为其他平台进行交叉编译