【问题标题】:Mix build flags for several configurations in CMake在 CMake 中为多个配置混合构建标志
【发布时间】:2020-01-22 00:25:32
【问题描述】:

根据 CMake 文档 here,我们可以使用构建类型来指定我们自己的构建类型,根据 CMAKE_BUILD_TYPE 选项向我们的自定义构建添加标志。

例如,if CMAKE_BUILD_TYPE == Profile,CMake 将使用CMAKE_CXX_FLAGS_PROFILE 作为构建标志。

我想知道是否有任何方法可以从其他构建类型“继承”构建标志。例如,我想要一个跟踪和调试构建以及一个跟踪和发布构建。是否可以执行类似CMAKE_BUILD_TYPE=Trace_Debug 的操作,将CMAKE_CXX_FLAGS_DEBUGCMAKE_CXX_FLAGS_TRACE 添加到构建中?我想这可能会有一些问题,因为它会允许项目具有相互矛盾的构建标志,但是现在没有什么禁止将-O1-O3 添加到我们的标志中,所以这个问题已经存在。

【问题讨论】:

    标签: cmake compiler-flags


    【解决方案1】:

    在 CMake 中没有像“继承”构建类型这样的事情。

    是否可以执行类似CMAKE_BUILD_TYPE=Trace_Debug 的操作,将CMAKE_CXX_FLAGS_DEBUGCMAKE_CXX_FLAGS_TRACE 添加到构建中?

    只需定义一个(新)变量CMAKE_CXX_FLAGS_TRACE_DEBUG 并适当地设置它的值。设置变量的值时,您可以使用其他变量的值:

    # Combine values of two variables into the single one.
    set(CMAKE_CXX_FLAGS_TRACE_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_TRACE}")
    

    您可以从结果变量中删除冲突的标志。 CMake 不知道冲突标志,它只是将它们传递给编译器工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-02
      • 2019-12-26
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多