如何在Mac OSX的Xcode中启用C++17?

26

我如何在OSX High Sierra(10.13.5)上的Xcode(9.4.1)中启用C++17?


1
什么是问题?这看起来像一个答案。 - NathanOliver
@claytonjwong 这是一个非常好的答案,但格式不正确。请参阅此文章,了解如何在StackOverflow上正确发布此类内容的更多信息 :) - Yksisarvinen
看起来可能太晚修改原始帖子了。下次我会做一个像“危险边缘”风格的问答游戏。谢谢! - claytonjwong
@claytonjwong 你应该仍然可以编辑这篇帖子吧?只需点击评论框上方的编辑按钮即可。 - Alan Birtles
1
我已经为您删除了答案,您应该能够从编辑历史记录中将原始帖子复制并粘贴到新的答案中,点击“源”按钮以获取原始标记。 - Alan Birtles
显示剩余2条评论
2个回答

34

在OSX High Sierra(10.13.5)上使用Xcode(9.4.1)进行C++17的步骤:

  1. 在Xcode中打开现有或创建新的C++项目
  2. 点击“显示项目导航器”按钮。它位于Xcode窗口左上角,最小化/最大化/关闭窗口按钮下方。它是最左边的图标,看起来像一个文件夹。
  3. 点击“Build Settings”,并向下滚动以查找并展开“Apple LLVM 9.0 - Language - C ++”部分
  4. 将C++语言方言组合框选择更改为“C++17 [-std=c++17]”

Xcode Build Settings

验证步骤:

现在当我输出__cplusplus时,我会看到201703,并且我能够编译C++17功能,例如if constexpr。

template<class T>
int compute(T x) {
    if constexpr( supportsAPI(T{}) ) {
        // only gets compiled if the condition is true
        return x.Method();
    } else {
        return 0;
    }
}

int main(){
    cout << __cplusplus << endl;
    return 0;
}

输出:

201703
Program ended with exit code: 0

5
针对我的情况(操作系统版本为OSX 10.15.6,Xcode版本为11.7),此设置在“Apple Clang - Language - C++”下而非“Apple LLVM 9.0 - Language - C++”下。 - James Whiteley

5
在使用开发CocoaPods(编写C++库)时,我还需要更新包含C++ 17代码的该库的podspec,以使编译包含此pod的宿主应用程序。因此,我将这些标志添加到库的podspec中。
  spec.xcconfig = { 
    "CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
    "CLANG_CXX_LIBRARY" => "libc++"
  }

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