Cmake没有将编译器标准设置为c ++ 11?

时间:2015-06-11 22:59:38

标签: cmake

我是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。我对后一个代码做错了什么?

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

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 )

在定义任何目标之前。