我是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。我对后一个代码做错了什么?
答案 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 )
在定义任何目标之前。