Boost総合スレ part7

このエントリーをはてなブックマークに追加
545デフォルトの名無しさん
static-staticビルド不可の原因が半分掴めました。対症療法的なビルドは可能になりました。
svn rev.52330(April 11,2009)での\Jamrootの更新で、160行目周辺の
if <link>shared in $(properties) && <runtime-link>static in $(properties) &&
! ( <toolset>cw in $(properties) )
{
return <build>no ;
}

if <link>shared in $(properties) && <runtime-link>static in $(properties) &&
! ( <toolset>cw in $(properties) )
{
ECHO "error: link=static together with runtime=link is not allowed" ;
ECHO "error: such property combination is either impossible " ;
ECHO "error: or too dangerious to be of any use" ;
EXIT ;
}
に変更されています。EXIT ;をreturn <build>no ;にすれば旧来通りの動作(上記エラーメッセージが2度表示されますが)になりstatic-staticがビルドされます。
546デフォルトの名無しさん:2009/05/10(日) 18:08:02
但し、RegexのICUサポートを有効にしている場合は
Skipping build of: libs/regex/build/icucore <build>no in common properties ...
と表示され、ビルドされたlibboost_regex-vc90-mt-sgd.libは
EXIT ;をreturn ;(唯戻るだけ)にして上記Skippingメッセージが表示されない状態でビルドした同libとファイルサイズもMD5も一致しません。
ログ(return <build>no ;:ttp://booster.x0.to/test86bak.txt return ;:ttp://booster.x0.to/test86.txt)を見ると
作業フォルダこそ違え同じ様な動作をしている様に見えるのですが、return ;でビルドした方が僅かにファイルサイズが大きくなります。
しかしそもそもstatic-staticでは実行されない筈のルーチンが実行されたり
エラーメッセージが2度表示されしまっている(エラー処理ルーチンを2度通っている)時点で何かがおかしいのですが、
今迄エラーメッセージを発せずICU絡みでしか実害が無い(と思われる)仕様でしたので問題が隠蔽されていた様です。
bjamとJamrootをそれぞれrev.38329(August 1,2007)とrev.38534(August 9,2007)迄戻してもstatic-staticがこのルーチンに引っ掛かっていましたので、
相当昔からのバグの様です。おかしいのは設定ファイルではなく恐らくbjamのソースの方でしょうか。
EXIT ;をreturn ;にしてエラーを完全に無かった事にしてしまうのが対症療法としては現状での最善と思われますが、
この場合、禁止されているshared-staticでも52回エラーメッセージを繰り返した後ビルドを始めてしまいますのでご注意下さい。