如何在Mac上启用C++17?

39
我可以在Linux上更新gcc以获取-std=c++17,但在Mac上无法做到同样的事情。
是否有某个版本的Clang可以进行更新,或者其他替代方案可以在我的Mac上使用C++ 17?请帮忙解决。谢谢。

你也可以在Mac上使用gcc。 - YiFei
6个回答

28

在我的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+。更多信息请查看此维基页面

brew install gcc --HEAD 应该在mac/homebrew上始终有效,并提供具有许多实验性功能的最新gnu gcc。另一方面,普通的brew install gcc应该安装支持大多数c ++ 17特性的gcc。

对于语言标准参数,请尝试-std=c++17-std=c++1z使用不同的编译器,其中一个应该起作用。


2
谢谢。我尝试了一下,成功了。在Darwin构建中,不得不将CXX=g++-改为g++。 - TheBigMalaka

8

Clang已经支持最新的C++版本,但默认为旧版本。

您只需在执行时在g++后添加--std=c++17,使用g++ --std=c++17 <filename>.cpp来执行代码。

如果您正在使用Code Runner进行执行,请按照以下步骤:

  1. 打开Code>Preferences>Settings,在设置顶部的搜索栏中输入code-runner.executormap

    enter image description here
  2. 选择Edit in settings.json,打开一个Json文件enter image description here

  3. settings.json文件中找到键为cpp的行,例如以下示例

    "cpp": "cd $dir && g++ --std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

4. 重新启动VSCode


6

现在,Xcode 10 默认提供 v17 标准,同时提供标准和变体版本。

通过构建设置:

CLANG_CXX_LANGUAGE_STANDARD:C++17/GNU++17

命令行界面(CLI):

-std=c++17 部分支持
-std=gnu++17


1
请注意,C++17功能仍然部分支持 - Franklin Yu
感谢@FranklinYu!我更新了帖子,指出了Clang实现的部分支持。 - DBrown

2

如果仓库有问题,您可以从源代码安装gcc(这并不复杂)。

Mac OS X的安装过程,在Linux上的安装过程在这里。希望对您有所帮助。


1

您需要先安装支持C++17标准的编译器。我建议您安装gcc、clang和苹果的LLVM:

  • gcc 9或10
  • clang 9或10
  • XCode LLVM 9.3或更高版本

其他编译器,如PGI、Intel Compiler等可能也可以使用,但我没有相关经验。

可以使用homebrew来安装gcc和clang:

gcc:

brew install gcc

clang
brew install llvm

您可以通过App Store获取XCode。
在Mac上,C++17并行STL需要Intel Threading Building Blocks(TBB)。
安装tbb最简单的方法是通过homebrew:
brew install tbb

在使用gcc或clang从命令行编译时,请不要忘记包含标志:-std=c++17。

-6

也许你应该使用以下命令安装Xcode命令行工具:

xcode-select --install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接