Cmake 不会将编译器标准设置为 c++11?
Cmake won't set the compiler standard to c++11?
我是 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。后面的代码我做错了什么?
我没有将 CMake 更新到最新版本...我应该在发布问题之前完成更新。上面的代码仅适用于版本 > 3.1.
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 )
在定义任何目标之前。
我是 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。后面的代码我做错了什么?
我没有将 CMake 更新到最新版本...我应该在发布问题之前完成更新。上面的代码仅适用于版本 > 3.1.
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 )
在定义任何目标之前。