boostインストール、thread、make
C++をもりもり使ってみたい。なんだかboostというライブラリが良いらしい。
C系といえばエキスパートCプログラミングを数年前に読んだ程度だけどインストールしてみる
sudo port install boost
boost-jamというのと一緒に入った。jamはboostのビルドをするのに使っているらしい。
MBPだけど30分ぐらいかけてbuildしてた。
http://d.hatena.ne.jp/aduka/20081222/1229909299 より
export MANPATH=/opt/local/man:$MANPATH export LIBRARY_PATH=/opt/local/lib:$LIBRARY_PATH export LD_LIBRARY_PATH=/opt/local/lib:$LD_LIBRARY_PATH export C_INCLUDE_PATH=/opt/local/include:$C_INCLUDE_PATH export CPLUS_INCLUDE_PATH=/opt/local/include:$CPLUS_INCLUDE_PATH export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib export BOOST_ROOT=/opt/local/include/boost:$BOOST_ROOT
を .profile に追記した。
試しに何かコンパイルしたい。
ここの一番下のthreadのサンプルをコンパイルしてみる
http://ja.wikipedia.org/wiki/Boost
原文ママ。
main.cpp として保存した
#include <boost/thread.hpp> #include <iostream> using namespace std; void hello_world() { cout << "Hello world, I'm a thread!" << endl; } int main(int argc, char* argv[]) { // hello_world関数を呼び出す新しいスレッドを起動する。 boost::thread my_thread(&hello_world); // スレッドが終了するまで待つ。 my_thread.join(); return 0; }
g++ -O main.cpp -o main -I/opt/local/include/boost /opt/local/lib/libboost_thread-mt.a ./main
すると
Hello world, I'm a thread!
動いた!
コンパイル面倒なので、Makefile作る
同じディレクトリに Makefile として保存した
SRC = main.cpp DST = main prefix=/opt/local INCPATH=/opt/local/include LIBPATH=/opt/local/lib CC=g++ -O INCLUDE=-I$(INCPATH)/boost LIB=$(LIBPATH)/libboost_thread-mt.a all: $(CC) $(SRC) -o $(DST) $(INCLUDE) $(LIB)
make
コンパイル通るのを確認。