我可以强制cmake将我的头文件包含在特定目标中吗?

时间:2018-01-18 13:36:25

标签: c gcc cmake c-preprocessor

我有一个头文件,用宏覆盖malloc。使用add_definitions(-include ../include/failing-malloc-test.h)我可以强制cmake在所有目标中包含此头文件。问题是我只想让我的头文件包含在某些目标(测试目标等)中。我尝试使用target_compile_definition实现这一点,但我无法达到同样的效果,因为target_compile_definition似乎与add_definitions不同。目前我能想到的唯一解决方案是复制所有源文件并手动添加#include "failing-malloc-test.h" - 我显然想避免这样做。

1 个答案:

答案 0 :(得分:2)

CMake有一个基于属性的机制。您可以分配目标,源文件和其他部分的属性。使用目标是常规操作和默认操作,因此提供了一整套target_*命令来设置目标上的属性。如果要为特定目标中的所有源添加编译选项,请使用target_compile_options。除了定义预处理器符号之外,不要将COMPILE_DEFINITIONS属性用于其他选项。所以你能够得到你想要的东西

target_compile_options(<my-test-target> "-include ../include/failing-malloc-test.h")