gpt4 book ai didi

c++ - 如何在终端中使用来自 Xcode 的可用 C++17 标志

转载 作者:行者123 更新时间:2023-11-28 04:49:00 30 4
gpt4 key购买 nike

我的 Xcode 9.2 可以使用以下选项编译 C++:-std=c++17-std=gnu++17

我的具有某些 C++17 功能的 C++ 代码编译成功。

但是,如果我尝试使用相同的标志在终端中编译相同的代码,则会出现以下错误:

clang++ -std=c++17 test.cpp -o 测试
错误:“-std=c++17”中的无效值“c++17”

clang++ -std=gnu++17 test.cpp -o 测试
错误:“-std=gnu++17”中的无效值“gnu++17”

我的 OSX 版本是 10.13.3,我的 Clang++ 版本是:

Apple LLVM 版本 9.0.0 (clang-900.0.39.2)
目标:x86_64-apple-darwin17.4.0

我认为终端会使用与 Xcode 相同的编译器。可能是这样,但我不能使用相同的选项。至少我做不到。

我尝试使用 -std=C++1z,但它没有编译我的代码,因为它不理解 C++17 的一些新特性。

所以我的问题是:有没有办法使用目前在我的 Xcode 中可用的 -std=c++17-std=gnu++17 9.2,在我的终端应用程序中?

这个问题与 stackoverflow 上提供的其他问题不同,因为我在 -std=c++17 选项中找到的所有答案在 Xcode 中都不可用。现在我们有了这个选项,但我不知道如何在终端中使用它。

最佳答案

Apple 当前随 Xcode 9.2 (clang-900.0.39.2) 提供的编译器不支持 -std=c++17 标志。

当您启用 c++17 支持时,Xcode 使用 -std=c++1z 标志。如果你想使用 -std=c++17 你需要手动安装 clang。您可以使用 brew install llvm 来做到这一点(假设您已经安装了自制软件)。

你可以编译你的程序

/usr/local/Cellar/llvm/5.0.0/bin/clang++ -std=c++17 test.cpp -o test

如果您不想使用编译器的完整路径,您可以更改 usr/bin/clang++ 中的符号链接(symbolic link)以指向新目标。

Xcode 9.3 附带的编译器将是

Apple LLVM 版本 9.1.0 (clang-902.0.30)

这可以处理 -std=c++17 标志。

关于c++ - 如何在终端中使用来自 Xcode 的可用 C++17 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48597840/

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