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 )

在定义任何目标之前。