prebuiltの選択
HamigakiライブラリのビルドをBoostのビルド済みライブラリに対応させています。
今のところ、user-config.jamで次のように設定する感じです。
# boost-libモジュールのためにBOOST_BUILD_PATHを追加 module { BOOST_BUILD_PATH += C:/hamigaki/tools/build ; modules.poke .ENVIRON : BOOST_BUILD_PATH : $(BOOST_BUILD_PATH) ; } make-project boost-lib ; module boost-lib { import boost-prebuilt ; alias headers : : : : <include>C:/Boost/boost ; local requirements = <search>C:/Boost/stage/lib <link>shared:<dll-path>C:/Boost/stage/lib ; boost-prebuilt boost_filesystem : $(requirements) ; boost-prebuilt boost_iostreams : $(requirements) ; boost-prebuilt boost_regex : $(requirements) ; boost-prebuilt boost_thread : $(requirements) ; boost-prebuilt boost_unit_test_framework : $(requirements) ; }
プロジェクト名をboostにするとBoost自体をビルドする場合に困るので、boost-libという名前にしました。
このままだとuser-config.jamのカスタマイズが必須になってしまうので、project-root.jamに既定の設定としてソースからビルドするものも用意しました。
# /boost-libプロジェクトが登録されているかチェック if ! [ project.find /boost-lib : . ] { # これは今まで通り use-project /boost : $(BOOST_ROOT) ; # カレントプロジェクトを保存 project.push-current [ project.current ] ; module boost-lib { __name__ = boost-lib ; import project ; project.initialize $(__name__) ; project $(__name__) ; alias headers : /boost//headers ; alias boost_filesystem : /boost/filesystem//boost_filesystem ; alias boost_iostreams : /boost/iostreams//boost_iostreams ; alias boost_regex : /boost/regex//boost_regex ; alias boost_thread : /boost/thread//boost_thread ; alias boost_unit_test_framework : /boost/test//boost_unit_test_framework ; } # カレントプロジェクトを復帰 project.pop-current ; }
これで上手くいくはずなんですが、まだリンクエラーで引っかかっています。
なんか、Boost.Testのビルドに失敗している気がします。
変な設定を混ぜてしまったみたいですね。
(7/9追記: boost-prebuiltがスタティックリンクに対応していないだけでした。修正済みです。)