我有一个头文件,用宏覆盖malloc。使用add_definitions(-include ../include/failing-malloc-test.h)
我可以强制cmake在所有目标中包含此头文件。问题是我只想让我的头文件包含在某些目标(测试目标等)中。我尝试使用target_compile_definition
实现这一点,但我无法达到同样的效果,因为target_compile_definition
似乎与add_definitions
不同。目前我能想到的唯一解决方案是复制所有源文件并手动添加#include "failing-malloc-test.h"
- 我显然想避免这样做。
答案 0 :(得分:2)
CMake有一个基于属性的机制。您可以分配目标,源文件和其他部分的属性。使用目标是常规操作和默认操作,因此提供了一整套target_*
命令来设置目标上的属性。如果要为特定目标中的所有源添加编译选项,请使用target_compile_options
。除了定义预处理器符号之外,不要将COMPILE_DEFINITIONS
属性用于其他选项。所以你能够得到你想要的东西
target_compile_options(<my-test-target> "-include ../include/failing-malloc-test.h")