【问题标题】:How to properly set CMake flags in CMakeLists.txt如何在 CMakeLists.txt 中正确设置 CMake 标志
【发布时间】:2020-01-28 18:07:55
【问题描述】:

我在设置选项和 CMake 变量并将它们传播到 CMake GUI 时遇到问题。

例如,以下行在我的 CMakeLists.txt 文件中:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -tR -DPOCO_DLL")
message("CMake flags: " ${CMAKE_CXX_FLAGS}) 

在 CMake GUI 中运行 configure 时,它​​会打印 "CMake flags: -tM -tR -DPOCO_DLL" 表明设置 CMAKE_CXX_FLAGS “有效”。

但 GUI 不会更新,仅在 CMAKE_CXX_FLAGS 行上显示 "-tM"

在 CMakeLists 文件中设置这些 CMAKE 选项以便将它们传播到 CMake GUI 的正确方法是什么?

【问题讨论】:

    标签: c++ cmake


    【解决方案1】:

    诀窍是设置CMAKE_CXX_FLAGS 之前 project(...) 声明。但这还不够;您还需要将其放入缓存中。

    另外,如果您计划支持从命令行界面初始设置,和/或-C cmake 选项(locad 初始缓存),则需要强制将其放入缓存中,如图所示:

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -tR -DPOCO_DLL" CACHE STRING "Default CXX options" FORCE)
    ...
    ...
    project(MyProject)
    ....
    

    另一方面,要非常小心,因为此时您正在设置命令行选项,而您对编译器一无所知,这是默认情况下在执行project 语句期间确定的。

    隐含地,这会使您的 CMakeLists.txt 编译器依赖。

    最后,这里是关于set cmake command的文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      相关资源
      最近更新 更多