THRESHE
THRESHE

Reputation:

Build Boost on Mac with Xcode

I've recently got acquainted with Boost library and I'd like to use it in my Xcode project. But sadly there is no HowTo or FAQ on how to do it :(

What's the sequence of actions to build and use Boost libraries in Xcode?

Upvotes: 16

Views: 36895

Answers (8)

McKinley
McKinley

Reputation: 1404

Elaboration of Ferrucio's answer:

  1. Install Boost using MacPorts (sudo port install boost) or Homebrew (brew install boost).

  2. Find the path to the Boost header files (it should be in /opt/homebrew/include if you're using Homebrew).

  3. Add the path to System Header Search Paths in the Build Settings of your Xcode target.

IMPORTANT NOTE: If you add the path to User Header Search Paths instead of System Header Search Paths, as other users suggested, then your code will fail to build, since the Boost files use angled-includes (#include <boost/filename.hpp>) to include each other. Angled-includes are only for including system library headers, and thus they only work if Boost is in the System Header Search Paths.

You can read about the difference between angled-includes and quoted-includes here.

Upvotes: 0

Tomas Andrle
Tomas Andrle

Reputation: 13354

Currently I'm very happy with using Pete Goodliffe's script which builds a framework from the Boost source package for both iOS and Mac. Drag and drop it into a project and it works!

There are multiple versions of the script out there. Here's one: https://gist.github.com/faithfracture/c629ae4c7168216a9856/61be257e1c0839c85743777d0687becad9913bf7

Upvotes: 0

Ferruccio
Ferruccio

Reputation: 100718

The easiest way I've found to do it is to install MacPorts, then you can install/build Boost via a single command:

sudo port install boost

Plus you get similar access to other open source software. The only downside I've found is that, like any other package management system, they are not always up to date with the latest version.

If you prefer Homebrew as your package manager, the command is:

brew install boost

Upvotes: 27

user2047372
user2047372

Reputation: 11

su - root

enter root password and then run below as root

/opt/local/bin/port install boost

If you have never logged in as root or forgotten your password, here are the steps to reset root password

http://support.apple.com/kb/HT1528?viewlocale=en_US&locale=en_US

Upvotes: 1

ch3rryc0ke
ch3rryc0ke

Reputation: 2803

I found that to build Boost 1.41.1 on MacOS, you need to do the following:

  1. Download boost 1.46.1 from here: http://sourceforge.net/projects/boost/files/boost/1.46.1/
  2. Unpack the file
  3. Open terminal, cd to the install directory, and do the following:

chmod u+x configure.sh

cd tools/build/v2/engine/src

chmod u+x build.sh

Then go back to the install directory, and:

./configure.sh

If that runs successfully, it will tell you to run:

./bjam

That's it.. for whatever reason, I needed to set those permissions manually before it would work.

Upvotes: 1

equackenbush
equackenbush

Reputation: 136

To build boost on a mac, follow the unix variants getting started page (http://www.boost.org/doc/libs/1_39_0/more/getting_started/unix-variants.html). You won't use Xcode directly to perform the build, but once complete you can add the boost include paths and dylib's to your Xcode project.

Upvotes: 5

rlbond
rlbond

Reputation: 67839

For most of the boost libraries, there's nothing to build, it's all in header files. The remainder of the instructions are here.

Upvotes: 0

Stack Overflow is garbage
Stack Overflow is garbage

Reputation: 248199

I don't know how to use Boost from XCode (I'm not a Mac programmer), but building boost is usually done through their own build tool, bjam.

They have a guide to building boost here, and you can download the latest version of bjam here

Once it is built, you reference it from Xcode the same way you would any other library. The boost/include should be added to your include path, and the libraries in boost/lib can be referenced for the boost libs that require it.

Upvotes: 6

Related Questions