2012-10-20 29 views
0

我有一個果醬文件層次結構如下:升壓果醬,使用絕對路徑依賴關係

Jamroot中:

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

build-project p1 ; 
build-project p2 ; 

的Jamfile在P1:

lib bar : bar.cpp 

的Jamfile在P2:

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

因此bar2取決於在酒吧和foo使用相對路徑。

是否可以在Jamroot中編寫單個命令,以便我可以在p2中的Jamfile中編寫以下代碼?

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

這樣會更方便,因爲您不需要考慮相對路徑了。我知道有use-project命令,但是1)我需要爲每個子目錄編寫一個use-project,2)我不知道如何使用use-project聲明根文件夾...

謝謝!

回答

1

1)您可以用glob和循環自動use-project聲明:

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

:P是獲取父目錄。更多關於指定一個項目ID,目前該項目變量擴展here

2)不與use-project完成的,它與project做:

project /root ; # common requirements and other useful things can go here if neededlink

我不認爲//foo是目標引用的有效語法。此外,我不認爲你可以在父項目中指定一個目標,其中某個目標引用不包含非空的項目標識(或路徑)。

最後,你可以在P2的Jamfile中這樣寫:

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