2011-12-22 21 views
1

私はbjamでboost.libをビルドしようとしていますが、私が何をしても、BOOST_LOG_NO_COMPILER_TLSフラグを認識させることができません。私は、このフラグを使用してとせずにコンパイルされ、向こうがステージフォルダ内に生成された各ファイルを比較するための比較に使用、それはフラグを無視していていることを確認するにはなぜbjamは私の議論を無視しているようですか?

bjam address-model=32 --toolset=msvc-10.0 --build-type=complete 
    --with-log variant=debug link=static runtime-link=static 
    define=BOOST_LOG_NO_COMPILER_TLS stage 

:私はこのように構築しています。

すべてのlibファイルは同一でした。私は、もしbjamが私のdefineフィールドを認識していたら、違いがあると思います。

私はブーストとbjamの新しいです、私は何か間違っているのですか?

+1

あなたの構文は正しいですが、ツールセットは例外です。ツールセットは 'toolset = msvc-10.0' sans' --'でなければなりません。 'define'を使うのではなく、' cxxflags = " - DBOOST_LOG_NO_COMPILER_TLS"を試すことができますが、 'define'を正しく使っているので、それが助けになるとは思えません。あなたは '#undef BOOST_LOG_NO_COMPILER_TLS'のソースをチェックしましたか? – ildjarn

+1

また、使用しているBoost.Logのバージョンでも、 'BOOST_LOG_NO_COMPILER_TLS'マクロを使用していますか?たぶんそれは古いバージョンのためです。ソースをgrepして、それがまだ適用可能であることを確認する必要があります。たとえば、以前のスレッドでは、Boost.LogはBoost.FileSystem v2でのみ動作することが示されていましたが、それはもはや事実ではなくなりました。 – ildjarn

答えて

1

--build-type=completeを指定しても、実際には再コンパイルされていないことが判明しました。

bin.v2フォルダーに品物がある場合は、上書きしません。 bin.v2フォルダを削除するか、bjamにその他の不明な魔法のパラメータを指定してください。

+1

実際に、 'bjam --help'(または現在のバージョンでは' b2 --help')とタイプすると、 "--build-type = complete"とは何を意味するのでしょうか?バリアント。最新のファイルを含め、すべてを再構築したい場合は '-a'オプションを使います(' --help'の出力でも説明します) –

+0

ポインタVladimirをありがとう。私はまだ '定義'が指定されている場合に再構築されない理由について混乱していましたが、それについて考えると、指定された '定義'(プリプロセッサ)が出力が最後であったものとは異なりますに対して構築されます。 –

+1

これは正しいです。技術的には定義が変更されていることに気付くことができます。特にSConsはビルドコマンドライン全体のチェックサムを保持することでこれを行います。しかし、定義を追加するとプロジェクト全体を再構築するのが良いことかどうかは完全には分かりません。 –

関連する問題