Recent Xcode versions for Mac OS X 10.7 and 10.8 ship with Clang, a modern compiler for C/C++/ObjC based on LLVM. It fully supports C++11: simply add -std=c++0x or -std=c++11 to your CXXFLAGS. This already gives you all the new language features such as the auto keyword.
However, when you get more in-depth with C++, you’ll also want to use the new features of the standard library, such as <array> or <random>. This however results in strange error messages:
gamelogic/Board.cpp:11:10: fatal error: 'random' file not found #include <random> ^
As it turns out, your binaries get linked to the system-default libstdc++ version (/usr/lib/libstdc++.6.dylib) which is too old to support C++11. However, Mac OS X also includes libc++ (/usr/lib/libc++.1.dylib), a complete reimplementation of the standard library by the LLVM team that is fully C++11 compatible. Simply tell the compiler to use it using -stdlib=libc++ and tell the linker to link against it using -lc++.
So for a qmake .pro project file, all this might look as follows. The conditional makes it compatible with other compilers such as g++ on Linux that already ship with a C++11-compatible standard library.
QMAKE_CXXFLAGS += -std=c++0x macx { contains(QMAKE_CXX, /usr/bin/clang++) { message(Using LLVM libc++) QMAKE_CXXFLAGS += -stdlib=libc++ QMAKE_LFLAGS += -lc++ } }
UPDATE 2016: Mac OS X 10.9 and higher default to libc++ and don’t require the extra compiler flag. Since Mac OS X 10.8 is out of support anyway, there is no reason to use the flag anymore.