【问题标题】:Cmake ignoring CMAKE_BUILD_TYPE=DebugCmake 忽略 CMAKE_BUILD_TYPE=Debug
【发布时间】:2012-06-17 15:01:14
【问题描述】:

我正在尝试包含调试/发布相关的编译器标志,例如:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x -Wall -DUSE_BOOST")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall")
set(CMAKE_CSS_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wall -O3")

我使用如下命令创建构建文件夹:

cmake -DCMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques

但是,对于 CMAKE 版本 2.8.7,CMAKE_BUILD_TYPE 似乎被忽略了。它似乎与 2.8.4 版(在另一台机器上)完美配合,那么这种方法是否已被弃用或者这里还有其他问题?

泽娜

【问题讨论】:

  • 它没有被弃用。你如何评估它被忽略了?
  • 可执行文件中没有调试符号,如果我添加了错误的命令,例如set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall很多错误命令"),没有效果。

标签: debugging cmake version release


【解决方案1】:

问题是-D 和变量之间必须有一个空格。也就是说,应该是:

cmake -D CMAKE_BUILD_TYPE=Release -D UseFortran=True -D CMAKE_CXX_COMPILER=g++-4.6 ~/repos/cliques/cliques

【讨论】:

  • 别忘了定义变量类型。来自 CMake 文档,它是:-D <var>:<type>=<value>
  • 从未必须在 -D 之后使用空格。你确定你的CMAKE_CXX_FLAGS_DEBUG 包含-g 吗?如果您重复使用相同的构建目录,则变量缓存中的无效值可能被重复使用。
  • 构建类型 RELEASERelease 是否等效?
  • 有没有办法强制CMAKE_BUILD_TYPE 以防它没有在命令行中定义?
【解决方案2】:

为什么在创建构建文件夹时不使用-DCMAKE_BUILD_TYPE=Debug? Cmake构建Release类型的项目或者Debug类型的项目,不能同时使用。

【讨论】:

    【解决方案3】:

    我认为他们在以前的版本中在 CMAKE_BUILD_TYPE 中做了错字。我们遇到了这个问题,这里有一条行得通。

    cmake -D CMAKE_BUILD_TYPE:STRING=Debug ../src
    

    您可以使用以下方法检查一切是否正常:

    cmake -L ../src
    

    使用此命令可能会为您提供命名变量 CMAKE_BUILD_TYPE 的正确方法。

    祝你好运。

    【讨论】:

      【解决方案4】:

      你有一个错字。你的代码是CMAKE_CSS_FLAGS_RELEASE。注意CSS,应该是CXX

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        • 2023-03-21
        • 2015-07-31
        • 2016-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多