cmakeで指定したバージョンのboostを認識させる


目的

  • Linuxで自分で用意したboostを利用したいが、cmakeは頑なに/usr/libにあるライブラリを利用しようとする問題の解決
  • 具体的には、最新のboost(1.57.0)がホームディレクトリにあって、それを利用してboost.numpyをビルドしたい

環境

CentOS 6.5
boost 1.57.0
python 3.4 (anaconda)
インテルコンパイラ 14.0.1(composer_xe_2013_sp1)

boost.pythonはインテルコンパイラを利用してpython3.4でビルド済み

方法

  1. /usr/lib64/boostからBoost-relwithdebinfo.cmake Boost.cmake BoostConfig.cmake BoostConfigVersion.cmakeの4つを適当なディレクトリにコピー
    上記のファイルが見つからない場合
    一旦は普通にcmakeで設定しBOOST_DIRの項目の項目にあるディレクトリを確認
    (cmakeの設定項目を全て表示させるために"Grouped"と"Advanced"のチェックボックスをチェックしてください)
  2. BoostConfig.cmakeを編集して利用したいに合わせてバージョン番号やディレクトリを変更
  3. cmakeのBOOST_DIRにBoostConfig.cmakeなどがあるディレクトリを指定
  4. CMAKE_EXE_LINKER_FLAGSに -lboost_python3 -L(boostのライブラリのパス) を指定

これで問題なくビルドできるはずです。
最後の項目は、Linux環境ではboostのライブラリが自動でリンクされないので、そのための設定です。

最後に

XXXConfig.cmakeのような設定ファイルを利用してシステム標準のライブラリを取得するのは、多分、boost以外にもあると思うので、どうやってもcmakeが指定したバージョンのライブラリを認識してくれない場合はご検討ください。