こっち、丸一日費やした。
まず、boost をコンパイルするときに、bjam は日本語パス未対応。
…毎度はまるのは デスクトップ の文字のせい。Desktop にしてくれ…>MicroSoft
でっっ。
bjam でコンパイラを指定するわけだけど、
vc7、vc7-stlport、vc-8_0 はあるのに、
なんで vc-8_0-stlport がないんだ!!!
しょうがないから、散々実験した挙句、
tools\build\v1\vc-8_0-stlport-tools.jam
ファイルを作ればなんとかなるんじゃないかと思いつき、
vc7-tools.jam と vc7-stlport-tools.jam を比較しながら、
vc-8_0-tools.jam を元に適当に改造。
--- vc-8_0-tools.jam Sat Jun 11 03:25:04 2005 +++ vc-8_0-stlport-tools.jam Tue Sep 26 10:05:52 2006 @@ -1,4 +1,12 @@ -extends-toolset msvc ; +extends-toolset msvc-stlport ; + +flags $(gCURRENT_TOOLSET) STLPORT_LIB_BASE_NAME ; + +STLPORT_LIB_BASE_NAME = stlport_vc80 ; + +# bring in the STLPort configuration +SEARCH on stlport.jam = $(BOOST_BUILD_PATH) ; +include stlport.jam ; # singleton variables... set-as-singleton VC80_ROOT ; @@ -26,10 +34,10 @@ VC_MANIFEST = "mt -manifest " ; VC_OUTPUTRESOURCE = -outputresource: ; -feature native-wchar_t : on off ; -flags vc-8_0 C++FLAGS : /Zc:forScope ; -flags vc-8_0 C++FLAGS <native-wchar_t>on : /Zc:wchar_t ; +feature native-wchar_t : off on ; +flags vc-8_0-stlport C++FLAGS : /Zc:forScope ; +flags vc-8_0-stlport C++FLAGS <native-wchar_t>on : /Zc:wchar_t ; # The following #// line will be used by the regression test table generation # program as the column heading for HTML tables. Must not include version number. -#//<a href="http://msdn.microsoft.com/vstudio/whidbey/default.aspx">Micro-<br>soft<br>VC++</a> +#//<a href="http://msdn.microsoft.com/vstudio/whidbey/default.aspx">Micro-<br>soft<br>VC++</a><br><a href="http://www.stlport.org/">STLport</a>
これで -sTOOLS=vc-8_0-stlport が使える。
…だがしかし。最初の方の STLPORT_LIB_BASE_NAME が気になる。
STLport をインストールしたときに確認したのだが、ファイル名の命名規則が 4.x から変わっている。
まぁ、結論だけ言えば、stlport.jam を読むとちゃんと書いてあったんだけどね。
そこで書いてあるとおり、bjam の実行引数に
-sSTLPORT_VERSION=5.0 -sSTLPORT_5.0_PATH="C:\Visual Studio\VC\STLport"
この2つのオプションを追加。
最初、前者しかつけてなくて、コンパイル終わったバイナリを見て
命名規則では STLport 付き ( -gdp ) なのに、dumpbin /SYMBOL 見ると STLport 使ってない!
とかいう矛盾したバイナリを吐きやがって半日潰しました。
エラーの1つでも吐けよ、bjam め…
あと、なんか boost のオートリンクが腐ってるなぁとか思ってたら、
環境変数 INCLUDE に STLport がちゃんと登録されてませんでした。
何でああなったんだろう…?
とりあえず何とかなってよかった。