gpt4 book ai didi

c++11 - C++11 的编译器标志

转载 作者:行者123 更新时间:2023-12-04 20:09:32 25 4
gpt4 key购买 nike

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

最佳答案

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

# test for C++11 flags
include(TestCXXAcceptsFlag)

if(NOT DISABLE_GXX0XCHECK)
# try to use compiler flag -std=c++11
check_cxx_accepts_flag("-std=c++11" CXX_FLAG_CXX11)
endif(NOT DISABLE_GXX0XCHECK)

if(CXX_FLAG_CXX11)
[add flag -std=c++11 where needed]
else()
if(NOT DISABLE_GXX0XCHECK)
# try to use compiler flag -std=c++0x for older compilers
check_cxx_accepts_flag("-std=c++0x" CXX_FLAG_CXX0X)
endif(NOT DISABLE_GXX0XCHECK)
if(CXX_FLAG_CXX0X)
[add flag -std=c++11 where needed]
...

玛拜 stackoverflow.com/q/10984442对你也有帮助。 Erik Sjölund 建议查看 CMake nightly build 的 FindCXXFeatures.cmake。

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

关于c++11 - C++11 的编译器标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20166663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com