【发布时间】:2016-12-29 16:36:30
【问题描述】:
我可以在 Linux 上更新 gcc 以获得 -std=c++17 但在 Mac 上不能这样做。是否有我可以更新到的 Clang 版本或其他替代方法来在我的 Mac 上获取 C++17?请帮忙。谢谢。
【问题讨论】:
-
Mac 上也可以安装 gcc。
标签: c++ macos clang c++17 darwin
我可以在 Linux 上更新 gcc 以获得 -std=c++17 但在 Mac 上不能这样做。是否有我可以更新到的 Clang 版本或其他替代方法来在我的 Mac 上获取 C++17?请帮忙。谢谢。
【问题讨论】:
标签: c++ macos clang c++17 darwin
在我的 10.11 El Capitan、Xcode 7.3.1 上,clang 已更新为:
Apple LLVM version 7.3.0 (clang-703.0.31)
几乎等同于 llvm 3.8 版。 clang++没有-std=c++17选项,但是-std=c++1z,目前运行良好,虽然只支持C++1z的部分特性。
对于 gcc,您可以通过以下方式安装一个非常新的:
brew install gcc --HEAD
现在将安装 gcc-6.1 (2016.8)。此 gcc 对 C++17 的支持有限,可以通过 -std=c++17 启用。
一些更新:
最近苹果clang对应的llvm版本不清楚,应该是3.9+或者4+。更多信息请查看this wiki page。
brew install gcc --HEAD 应该始终适用于 mac/homebrew,并为您提供具有许多实验性功能的尖端 gnu gcc。另一方面,普通的brew install gcc 现在应该安装支持大多数 c++17 功能的 gcc。
对于语言标准参数,请为不同的编译器尝试 -std=c++17 和 -std=c++1z,其中一个应该可以工作。
【讨论】:
也许您应该使用以下命令安装 xcode 命令工具:
xcode-select --install
【讨论】:
v17 标准现在默认提供Xcode 10,提供标准和变体两种风格。
通过构建设置:
CLANG_CXX_LANGUAGE_STANDARD:C++17/GNU++17
CLI:
-std=c++17 partial support
-std=gnu++17
【讨论】:
您需要先安装一个支持 C++17 标准的编译器。我只能推荐安装 gcc、clang 和 Apple 的 LLVM:
PGI、Intel Compiler 等其他工具可能会工作,但我没有这些经验。
gcc 和 clang 可以使用 homebrew 安装
gcc:
brew install gcc
叮当
brew install llvm
您可以通过 App Store 获取 XCode。
在 Mac 上,C++17 并行 STL 需要英特尔线程构建模块 (TBB)。
安装 tbb 最简单的方法是通过自制软件:
brew install tbb
当使用 gcc 或 clang 从命令行编译时,不要忘记包含标志: -std=c++17
【讨论】:
Apple 的 Clang 已支持最新的 C++ 版本,但默认为旧版本。
您所要做的就是在执行时在g++ 之后添加--std=c++17,使用g++ --std=c++17 <filename>.cpp 执行您的代码
如果您使用代码运行器执行,请遵循:
Code>Preferences>Settings 在设置顶部的搜索栏中输入code-runner.executormap,
从这个settings.json 文件更改下面的示例中使用键cpp line:8 的行
"cpp": "cd $dir && g++ --std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
4。重启VSCode
【讨论】: