Cmake不会将编译器标准设置为c ++ 11吗?

ral*_*ian 5 cmake

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

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Run Code Online (Sandbox Code Playgroud)

但是当我改变它

set_property(GLOBAL PROPERTY CXX_STANDARD 11)
set_property(GLOBAL PROPERTY CXX_STANDARD_REQUIRED true)
Run Code Online (Sandbox Code Playgroud)

cmake没有告诉编译器使用c ++ 11.我对后一个代码做错了什么?

ral*_*ian 6

我没有将CMake更新到最新版本......我应该在发布问题之前做到这一点.上面的代码仅适用于版本> 3.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 )
Run Code Online (Sandbox Code Playgroud)

在定义任何目标之前。