【问题标题】:Compile same file with different flags using CMAKE使用 CMAKE 编译具有不同标志的相同文件
【发布时间】:2011-10-21 00:52:58
【问题描述】:

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

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

add_definitions(-DINSTRUMENT)

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

【问题讨论】:

    标签: g++ cmake


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多