使用CMAKE使用不同的标志编译相同的文件

Gab*_*ern 19 g++ cmake

我想将相同的.cpp源文件编译成两个不同的目标可执行文件,我正在使用cmake.一个将有一些仪器代码而另一个不会.这样我就可以比较仪器的开销.

我用#ifdefs分隔了检测代码,所以我想使用-D标志定义一个值.我看到这是可能的

add_definitions(-DINSTRUMENT)
Run Code Online (Sandbox Code Playgroud)

但看起来这适用于该目录中创建的所有可执行文件.我想知道是否有一种很好的方法只为特定的可执行目标设置定义.

szx*_*szx 21

您可以将其中一个目标的COMPILE_DEFINITIONS属性设置为具有特定于目标的定义:

set_target_properties (instrumented_target PROPERTIES COMPILE_DEFINITIONS "INSTRUMENT")
Run Code Online (Sandbox Code Playgroud)

更新:

从CMake 2.8.11开始,您也可以target_compile_definitions用于相同的目的.

  • 该属性也可以基于每个源文件使用"set_property(SOURCE source_file_name PROPERTY COMPILE_DEFINITIONS ...)" (5认同)