C++ 11的编译器标志

Mik*_*ike 5 cmake c++11

我正在尝试编写一个CMakeFiles.txt(以前从未这样做过),我不确定用于C++ 11的编译器标志是什么.我使用GCC 4.8.2,标志是std = c ++ 0x,但我不知道如何处理其他编译器.我不认为他们都使用那个标志,我相信MinGW-TDM使用std = c ++ 11,确保编译器使用c ++ 11的正确方法是什么?

usr*_*567 3

在我的项目中,我只是尝试添加 -std=c++11 ,如果这不起作用,我会尝试 -std=c++0x 。当两者都失败时,我就不管它。对我来说效果很好,但我从未尝试过 Windows 编译器。\n这里是一个示例代码:

\n\n
# test for C++11 flags\ninclude(TestCXXAcceptsFlag)\n\nif(NOT DISABLE_GXX0XCHECK)\n  # try to use compiler flag -std=c++11\n  check_cxx_accepts_flag("-std=c++11" CXX_FLAG_CXX11)\nendif(NOT DISABLE_GXX0XCHECK)\n\nif(CXX_FLAG_CXX11)\n  [add flag -std=c++11 where needed]\nelse()\n  if(NOT DISABLE_GXX0XCHECK)\n    # try to use compiler flag -std=c++0x for older compilers\n    check_cxx_accepts_flag("-std=c++0x" CXX_FLAG_CXX0X)\n  endif(NOT DISABLE_GXX0XCHECK)\n  if(CXX_FLAG_CXX0X)\n    [add flag -std=c++11 where needed]\n...\n
Run Code Online (Sandbox Code Playgroud)\n\n

Mabye stackoverflow.com/q/10984442也能帮助您。Erik Sj\xc3\xb6lund 建议查看 CMake nightly build\'s FindCXXFeatures.cmake。

\n\n

编辑:我用 Microsoft 的 Visual C++ 尝试过此操作,我的解决方案有一个缺陷:编译器发出有关无法识别的标志的警告。这意味着 CMake 检测到该标志是正确的并添加它。因此,每个可执行文件都会收到此警告。添加 -Werror 或 Visual C++ 的任何标志应该会有所帮助。

\n