0

次のようなジャムファイル階層があります。

ジャムルート:

lib foo : <file>/SOME/RANDOM/FILE ;

build-project p1 ;
build-project p2 ;

p1 の Jamfile:

lib bar : bar.cpp

p2 の Jamfile:

lib bar2 : bar2.cpp ../p1//bar ..//foo ;

したがって、bar2 は相対パスを使用して bar と foo に依存します。

代わりに p2 の Jamfile に次のコマンドを書き込むことができるように、Jamroot に単一のコマンドを書き込むことは可能ですか?

lib bar2 : bar2.cpp /p1//bar //foo ;

もう相対パスを考える必要がないので、より便利です。コマンドがあることは知っていますが、use-project1) サブディレクトリごとに use-project を作成する必要があります。2) use-project を使用してルート フォルダーを宣言する方法がわかりません...

ありがとう!

4

1 に答える 1

1

1)ループを使用してuse-project宣言を自動化できます。glob

for p in [ glob */[jJ]amfile ]
{
    use-project /$(p:P) : ./$(p:P) ;
}

:P親ディレクトリを取得するためのものです。変数拡張の詳細はこちら

2)現在のプロジェクトへのproject-idの割り当ては、ではなく、:use-projectで行われprojectます。

project /root ; # common requirements and other useful things can go here if neededリンク

//fooターゲット参照の有効な構文ではないと思います。また、空でないプロジェクトID(またはパス)を含まないターゲット参照を使用して、親プロジェクトのターゲットを指定することはできないと思います。

最後に、これをp2のJamfileに書き込むことができます。

lib bar2 : bar2.cpp /p1//bar /root//foo ;
于 2012-10-21T16:31:35.080 に答える