使用 CMAKE 编译具有不同标志的相同文件
Posted
技术标签:
【中文标题】使用 CMAKE 编译具有不同标志的相同文件【英文标题】:Compile same file with different flags using CMAKE 【发布时间】:2011-10-21 00:52:58 【问题描述】:我想将同一个 .cpp 源文件编译成两个不同的目标可执行文件,我正在使用 cmake。一个会有一些仪器代码,另一个没有。这样我就可以比较仪器的开销。
我用#ifdefs 分隔了检测代码,所以我想使用-D 标志定义一个值。我看到这是可能的
add_definitions(-DINSTRUMENT)
但看起来这适用于该目录中创建的所有可执行文件。我想知道是否有一种好方法可以仅为特定的可执行目标设置定义。
【问题讨论】:
【参考方案1】:您可以将目标之一的COMPILE_DEFINITIONS 属性设置为具有特定于目标的定义:
set_target_properties (instrumented_target PROPERTIES COMPILE_DEFINITIONS "INSTRUMENT")
更新:
从 CMake 2.8.11 开始,您还可以将target_compile_definitions
用于相同目的。
【讨论】:
该属性也可用于每个源文件,使用“set_property(SOURCE source_file_name PROPERTY COMPILE_DEFINITIONS ...)” @DLRdave,我认为应该注意的是,使用set_target_properties()
不会覆盖前面定义的add_definitions()
已经添加的定义。 (我一直担心这个,直到我跑了make VERBOSE=1
)以上是关于使用 CMAKE 编译具有不同标志的相同文件的主要内容,如果未能解决你的问题,请参考以下文章