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

コンパイル通るのを確認。