【问题标题】:Cmake won't set the compiler standard to c++11?Cmake 不会将编译器标准设置为 c++11?
【发布时间】:2015-06-11 22:59:38
【问题描述】:

我是 cmake 新手,我正在用它构建一些 c++11 代码(特别是一组模板别名。)我想使用 CXX_STANDARD 属性来希望涵盖所有平台和简单介绍的问题将 -std=c++11 添加到 cxxflags,之前对我有用:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

但是当我把它改成

set_property(GLOBAL PROPERTY CXX_STANDARD 11)
set_property(GLOBAL PROPERTY CXX_STANDARD_REQUIRED true)

cmake 不会告诉编译器使用 c++11。后面的代码我做错了什么?

【问题讨论】:

  • 可能是this 会帮助你吗?
  • 谢谢,我已经看到了,但是在仔细检查之后,我意识到我上面生成的或多或少有效的代码至少需要 cmake 3.1 版,而我运行的是 2.8 版。我升级了,它工作正常。

标签: cmake


【解决方案1】:

我没有将 CMake 更新到最新版本...在发布问题之前我应该​​这样做。以上代码仅适用于 > 3.1 版本。

【讨论】:

    【解决方案2】:

    CMAKE_CXX_STANDARD 不是全局属性,而是变量。 http://www.cmake.org/cmake/help/v3.1/variable/CMAKE_CXX_STANDARD.html#variable:CMAKE_CXX_STANDARD

    所以你只需要

    set( CMAKE_CXX_STANDARD 11 )
    

    在定义任何目标之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      相关资源
      最近更新 更多