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のヘッダーパスの追加
- プロジェクトナビゲータでプロジェクト名をクリック
- 検索窓に「header search path」と入力してHeader Search Pathを探す
- ダブルクリックしてBoostヘッダーへのパスを指定。
私は /opt/local以下にBoostを配置したので /opt/local/boost_1_63_0になります
Boostライブラリのパスの追加
- プロジェクトナビゲータでプロジェクト名をクリック
- 検索窓に「library search path」と入力してLibrary Search Pathを探す
- ダブルクリックしてBoostライブラリパスを指定。
私は /opt/local以下にBoostを配置したので /opt/local/boost_1_63_0/stage/libになります
リンクするライブラリ名の追加
- プロジェクトナビゲータでプロジェクト名をクリック
- 検索窓に「other linker flags」と入力してOther Linker Flagsを探す
- ダブルクリックしてリンクするBoostライブラリ名を指定。
上記のコードで必要なのは libboost_thread.dynlibとlibboost_system.dynlibなので-lオプションで-lboost_threadと-lboost_systemを指定する
このあと▶ボタンを押すことで実行してみます。
無事実行できました!
C++11からはstd::threadが使えますよ。
ありがとうございまます。
Boostライブラリを使う例としてboost::threadのsleepを使ったのですが、あんまり必然性のないサンプルコードでしたね。。。