[C++] XcodeでBoostライブラリを利用する

MacにBoostをインストールするでMacにBoostをインストールしてみたので早速Xcodeで簡単なBoostを使ったアプリを書いてみたところXcodeでのライブラリ関連の設定につまずいたので書き留めておきます。

実行しようとしたコードは以下のようなもの

#include <iostream>
#include <boost/thread.hpp>

int main() {
    long sec = 5;
    std::cout << "sleeping " << std::to_string(sec) << " seconds." << std::endl;
    boost::this_thread::sleep(boost::posix_time::seconds(sec));
}

Boostライブラリを使うためにはコンパイラおよびリンカに以下の設定を行う必要があります

  • Boostのヘッダーパスの追加
  • Boostライブラリのパスの追加
  • リンクするライブラリ名の追加

Boostのヘッダーパスの追加

  1. プロジェクトナビゲータでプロジェクト名をクリック
  2. 検索窓に「header search path」と入力してHeader Search Pathを探す
  3. ダブルクリックしてBoostヘッダーへのパスを指定。
    私は /opt/local以下にBoostを配置したので /opt/local/boost_1_63_0になります

 

Boostライブラリのパスの追加

  1. プロジェクトナビゲータでプロジェクト名をクリック
  2. 検索窓に「library search path」と入力してLibrary  Search Pathを探す
  3. ダブルクリックしてBoostライブラリパスを指定。
    私は /opt/local以下にBoostを配置したので /opt/local/boost_1_63_0/stage/libになります

リンクするライブラリ名の追加

  1. プロジェクトナビゲータでプロジェクト名をクリック
  2. 検索窓に「other linker flags」と入力してOther Linker Flagsを探す
  3. ダブルクリックしてリンクするBoostライブラリ名を指定。
    上記のコードで必要なのは libboost_thread.dynlibとlibboost_system.dynlibなので-lオプションで-lboost_threadと-lboost_systemを指定する

このあと▶ボタンを押すことで実行してみます。

無事実行できました!

 

[C++] MacにBoostをインストールする

Mac上でもBoost使ったコードを書けるようにBoostをインストールしてみました。

まずはBoostのサイトから最新のBoostライブラリをダウンロードしてきます

現時点では1.63.0でした

ダウンロードしたzipファイルを解凍し/opt/localに移動します

$ cd ~/Downloads
$ unzip boost_1_63_0.zip
...
$ sudo mv boost_1_63_0 /opt/local

あらかじめコンパイルが必要なライブラリをビルドします

$ cd /opt/local/boost_1_63_0
$ ./b2 -j2
...
The Boost C++ Libraries were successfully built!

The following directory should be added to compiler include paths:

/opt/local/boost_1_63_0

The following directory should be added to linker library paths:

/opt/local/boost_1_63_0/stage/lib

$

XcodeでBoostを使う場合にはXcodeでBoostライブラリを利用するも見てみてください