【问题标题】:How to add std=c++11 flag to clang-cl?如何将 std=c++11 标志添加到 clang-cl?
【发布时间】:2014-11-17 12:00:53
【问题描述】:

我尝试在 Windows 下用 clang-cl 编译一个 C++11 程序。 Clang-cl 是 clang 的包装器,与 cl(Visual Studio 编译器)更加兼容。我尝试添加-std=c++11/std=c++11,但都被拒绝了。这并不奇怪,因为 cl 没有 C++11 标志。 但是我不能在 clang-cl 中使用 C++11 的特性。

如何在 clang-cl 中启用 C++11 支持?

【问题讨论】:

    标签: windows c++11 clang compiler-flags


    【解决方案1】:

    在前面提到的文档中说:http://clang.llvm.org/docs/UsersManual.html#clang-cl

    对于 Windows 目标,clang 默认为 C++11。

    也许您不需要将任何标志传递给 clang-cl。

    【讨论】:

    • 我尝试编译一个使用 Linux 和 Clang 3.5 开发和编译的代码库。我尝试使用 CMake 和 Visual Studion 2013 以及 Clang 3.5 作为工具链。由于 shared_ptr 或 nullptr 导致编译器出错。我会仔细检查它是否真的是 C++11。因为在 Windows 上对 _has_attribute(deprecated) 的配置检查也失败了。
    • @usr1234567 C++11 默认使用 clang-cl 为我工作。确保从配置为定位 Visual Studio 标头等的环境中运行它。也就是说,clang-cl 还需要设置 cmd.exe 环境以便您可以使用 cl.exe 的 vcvarsall.bat 脚本。
    • @bames53 我想我做到了。它位于我的 CMake 项目的构建目录中。还是我必须使用 CMake 明确设置?
    • @usr1234567 如果您从 cmd.exe 运行 clang-cl,您需要自己配置环境,或使用 Visual Studio cmd.exe 快捷方式之一。如果你是从 Visual Studio 项目中构建的,那么它应该由 VS 为你设置。
    • 我尝试使用 Visual Studio 中的 cmd 来设置所有内容。可以,谢谢。
    【解决方案2】:

    来自official docs

    /std:<standard>
    

    【讨论】:

      【解决方案3】:

      对于任何未来的访问者,使用/std:c++17 for clang-cl 对我有用。注意std后面没有等号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-06
        • 1970-01-01
        • 2017-04-09
        • 2016-07-08
        • 2020-01-27
        • 2012-12-20
        • 2020-11-21
        • 1970-01-01
        相关资源
        最近更新 更多