ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

boost を組み合わせる

こっち、丸一日費やした。


まず、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 がちゃんと登録されてませんでした。
何でああなったんだろう…?


とりあえず何とかなってよかった。