Search code examples
boostclangxcode5llvm5

Using Boost on Xcode 5 - Apple LLVM 5.0


I have a problem building Boost for Xcode 5 now that there is only one compiler LLVM 5.0.

I've tried with Homebrew using --c++11, using clang.... I've tried various ideas and scripts but none has worked so far.


Solution

  • To build 32/64 bit fat static binaries for boost 1.54.0 compiled with clang/llvm, the only compiler for Xcode 5:

    1. Download the unix tarball (not the ZIP! -- that has CR/LF line endings and will gack)
    2. Untar it.
    3. cd to boost_1_54_0/
    4. Run:

      ./bootstrap.sh toolset=clang

    5. Run:

      ./b2 toolset=clang --without-mpi cxxflags="-arch i386 -arch x86_64 -fvisibility=hidden -fvisibility-inlines-hidden -std=c++11 -stdlib=libc++ -ftemplate-depth=512" linkflags="-stdlib=libc++" link=static stage

    ...which puts the output libs in ./stage/lib

    Then move the libraries where you want them.

    These are release libraries, which should be all you need.

    This is for OSX. You can change -arch and add other options in the cxxflags= for iOS.

    If you need the message passing interface, remove --without-mpi from the b2 command.

    ==== Fun Facts:

    • building boost seems a moving target, so these instructions will likeley break in a future release
    • I tried to -Wno-xxxx the warnings off in the cxxflags= ... but it didn't work
    • bjam and b2 are the same thing, b2 is the new name
    • clang as a first-class toolset was added somewhere along the way, so you can ignore any instructions on the web to modify "user-config.jam" (Everything you need seems to be able to be passed on the b2 command line for these one-off builds.)