2013-02-18 24 views
1

我在SCons中的並行版本中遇到目錄依賴問題。 考慮與單個SConstruct兩個項目在下面(簡化)層次:SCons:並行版本中的目錄依賴關係

- SConstruct 
- project1 
    - src 
- project2 
    - src 
- build 
    - project1 
    - project2 
- dist 
    - project1 
    - project2 

的每個PROJECT1和項目2都應該是(使用變種DIR)相關的build目錄下建立和需要安裝幾個目標在相關的dist目錄下。

項目2取決於項目1的dist。我有這種依賴性明確使用Depends()語句,像這樣的狀態:

Depends('project2', 'dist/project1') 

當我使用非並行構建,沒有任何問題。項目1已完全構建,目標安裝在dist目錄中,只有項目2已建立。但是,當我使用多個作業(4)時,項目2正在同時構建到要運行的Install()構建器,以便安裝在項目1的dist目錄中需要安裝的文件。

所以,我的問題是:

  • 是否Depends(project2, dist/project1)聲明指創建dist/project1目錄或建築上的所有目錄的孩子完成?
  • 我該如何解決這個問題?

非常感謝你,

釜谷。

回答

1

不要在Depends()函數中將實際目錄指定爲字符串,而是嘗試指定由SCons project1和project2構建器返回的實際目標。每個SCons構建器(或者至少大多數構建器)都會將受影響的目標作爲對象返回,並且最好使用此對象而不是文件/ directoy名稱,因爲如果不使用完全相同的文件/目錄路徑,則不會考慮它作爲同一個目標。

下面是一個例子,相應地填寫內容:

project2Target = Install() 
# Im not sure how you're building project1, so replace the builder 
project1Target = Proj1DistBuiler() 

Depends(project2Target, project1Target)