我有一个用宏覆盖malloc的头文件。使用add_definitions(-include ../include/failing-malloc-test.h)
我可以强制cmake在所有目标中包含此头文件。问题是我只想在某些目标(测试目标等)中包含头文件。我试着用target_compile_definition
来实现这一点,但我无法达到同样的效果,因为target_compile_definition
的工作方式似乎与add_definitions
不同。目前,我能想到的唯一解决方案是复制所有源文件并手动添加#include "failing-malloc-test.h"
——我显然想避免这样做。
最佳答案
CMake有一个基于属性的机制。可以指定目标、源文件和其他零件的特性。使用目标是常见的默认操作,因此提供了一整套target_*
命令来设置目标的属性。如果要为特定目标中的所有源添加编译选项,请使用target_compile_options
。不要将COMPILE_DEFINITIONS
属性用于定义预处理器符号以外的其他选项。所以你可以得到你想要的
target_compile_options(<my-test-target> "-include ../include/failing-malloc-test.h")
关于c - 我可以强制cmake在特定目标中包含我的头文件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48322670/