0

次の Jamfile を使用しています (ディレクトリ /home/morpheus/base/CDef 内):


lib CDef : [グロブ *.cpp] : static ;

install libCDef : CDef : LIB "/home/morpheus/base_install/lib" : release ;

install _libCDef_D : CDef : LIB "/home/morpheus/base_install/libdebug" : debug ;


2 つのインストール行をデバッグ ディレクティブとリリース ディレクティブの両方を持つ行に変更できるかどうか疑問に思っていました。

また、別のディレクトリ ( /home/morpheus/FSLR ) の別の Jamfile でライブラリを使用するために、次の Jamfile を使用して exe callFSLR をビルドしています。


lib CDef : : CDef を解放 /home/morpheus/base_install/lib ; lib CDef :: debug CDef /home/morpheus/base_install/libdebug ;

exe callFSLR : call_FSLR.cpp CDef:: デバッグ リリース;

install install-bin をインストールします: callFSLR : "/home/morpheus/base_install/bin" release ;


Jamfile /home/morpheus/base/CDef/Jamfile 内の CDef を参照するために「use-project」を使用することは、おそらく推奨できると思いますか?

4

1 に答える 1

0

(おそらくフォーマットが原因で、ジャムルールに欠けているものがあると思います。)

はい、条件付き要件を使用して、同じルールでデバッグターゲットと本番ターゲットの両方を確実に定義できます。例としては、ルールのドキュメントinstallもあります。

あなたの元のルールは次のように見えると思います

install libCDef
  : CDef
  : <install-type>LIB
    <location>"/home/morpheus/base_install/lib"
  : <variant>release ;

install _libCDef_D
  : CDef
  : <install-type>LIB
    <location>"/home/morpheus/base_install/libdebug"
  : <variant>debug ;

location次のように、機能をバリアントに依存させる必要があります。

install libCDef
  : CDef
  : <install-type>LIB
    <variant>release:<location>"/home/morpheus/base_install/lib"
    <variant>debug:<location>"/home/morpheus/base_install/libdebug"
  ;

2番目の質問については、はい、use-project必要ではありませんが、役に立ちます。あなたはこれをしたい

exe callFSLR : call_FSLR.cpp ../base/CDef//CDef ;

../base/CDef//CDefCDefプロジェクト(ディレクトリ)で定義された名前のターゲットを参照し../base/CDefます。これはライブラリルールを参照するため、boost buildは、インストールルールによって作成されたバージョンではなく、binディレクトリ内のライブラリのバージョンを使用します。(これは、ダイナミックライブラリの問題がある場合に問題になる可能性があります。)また、lib CDefこのルールのすぐ上は必要ありません。

の不器用さを回避するために、ルールを../base/CDef使用してプロジェクトの新しい定義を作成できます。use-project次に、ディレクトリ構造を再編成する場合、変更できる場所は1つだけです。

use-project /CDef-project : ../base/CDef ;

exe callFSLR : call_FSLR.cpp /CDef-project//CDef ;

この1つのJamfileで1つのターゲットを使用する場合は、エイリアスルールを使用することもできます。

alias CDef : ../base/CDef//CDef ;

exe callFSLR : call_FSLR.cpp CDef ;
于 2010-09-05T04:10:44.600 に答える