How do I enable C++17 in Xcode for Mac OSX?
Steps to use C++17 in Xcode (9.4.1) on OSX High Sierra (10.13.5):
- Open existing or create a new C++ project in Xcode
- Click on the "show project navigator" button. It is located on the top-left section of Xcode window just below the minimize/maximize/close window buttons. It is the left-most icon and looks like a folder.
- Click on "Build Settings" and scroll down to find and expand the section "Apple LLVM 9.0 - Language - C++"
- Change the C++ Language Dialect combobox selection to "C++17 [-std=c++17]"
Verification steps:
Now when I output __cplusplus, I see 201703, and I am able to compile C++17 features, such as 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;}
Output:
201703Program ended with exit code: 0
When using development CocoaPods (writing a C++ library) I had also to update podspec
of this library containing c++ 17 code to make compile host application which included this pod.
So I added these flags to library's podspec
spec.xcconfig = { "CLANG_CXX_LANGUAGE_STANDARD" => "c++17", "CLANG_CXX_LIBRARY" => "libc++" }