Using C++0x in Xcode 4.2 project via CMake

2019-03-14 18:34发布

问题:

I'm using CMake to generate a project file for Xcode 4.2 on OSX Lion, and I'm using some of the C++0x features in LLVM like nullptr and auto. In order to use these, Xcode requires that 2 project settings be set:

C++ Language Dialect set to C++0x [-std=C++0x]

C++ Standard Library set to libc++ (LLVM C++ standard library with C++'0X support)

Currently every time I generate an Xcode project, I have to go in and manually adjust these settings.

Is there a way to specify these settings in CMake?

Thanks

回答1:

after digging into this for a little, these are the commands to set the appropriate xcode settings:

set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvm.clang.1_0")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -stdlib=libc++ -g -Wall")

I think setting the c++ flags is redundant, so it might also work without the last line.

hope that helps!



回答2:

The first one you could change the CMAKE_CXX_FLAGS attribute and add it: SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -std=C++0x")

As for selecting GCC instead of Clang you'll have to use something like: Switching between GCC and Clang/LLVM using CMake

That will override the CLang default values to use GCC