2009-07-05 9 views
3

デフォルトの命名規則は次のとおりです。すべてのライブラリが同じディレクトリに内蔵されているファイル名の装飾がないビルドブースト?ブーストC++ライブラリの

libboost_regex-vc71-mt-d-1_34.lib

。ビルドプロセスを変更して、ファイル名にターゲットアーキテクチャやビルドタイプ(バージョンは問題ありません)が含まれないようにしたいと思います。

vc71/debug/libboost-1_34.lib

vc71/release/libboost-1_34.lib

これを行う方法上の任意のアイデアを:私は、ファイルがために構築されたアーキテクチャに応じて別のディレクトリで終わるしたいですか?

答えて

3

"--layout = system"を渡すことで、ライブラリのファイル名からすべての装飾を削除できます。上の例では "vc71/release"のパスが表示されています。このレイアウトを取得するためのすぐれた方法はありません。あなたはhackignのビットでそれを行うことができます。 Jamrootでは、と場所を指定する「ステージ適切な」ターゲットを見つける:

<location>$(stage-locate)/lib 

あなたは例えば、特性に応じて異なる場所を指定することを変更することができます。

<variant>release:<location>$(stage-locate)/lib/release 
    <variant>debug:<location>$(stage-locate)/lib/debug 

ためBoost.Build websiteを参照してください。その他のドキュメント

+1

- layoutはどこに文書化されていますか?私は全面的に見て、私はそれについて言及を見つけることができません。 – Gili

+0

"bjam --help"の出力にあります。はじめに、このオプションの詳細について説明します。 –

0

Boostビルドシステムでこれを行う方法はわかりませんが、非常に簡単なスクリプトを使用して、あまり難しくなく移動して名前を変更することができます。

ほとんどのWindowsのコンパイラおよびリンカー:、別のバイナリを必要とするライブラリを、ブーストがauto-linkingを採用しているため一方

は、ほとんどのWindowsのコンパイラでは、ほとんどのライブラリファイル名を自分で気にする必要はありません第2の課題を解決する、いわゆる「オートリンクサポート」を備えています。 Boostヘッダーファイルの特別なコードは、コンパイラーのオプションを検出し、その情報を使用して、正しいライブラリーの名前をオブジェクトファイルにエンコードします。リンカーは検索するように指示したディレクトリからその名前のライブラリを選択します。

ファイルを移動して名前を変更すると、そのファイルが破損します。

関連する問題