我有一个用宏覆盖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/

10-15 16:44