2013-07-15 64 views
1

我在SCons中創建了一個特殊構建器,用於從需求文件創建Python中的virtualenv。如果給定一個標誌--virtualenv,我想設置一個名爲HOSTPYTHON的環境變量,它改變了scons用於構建和測試我其餘代碼的Python。在SCons中首先運行構建

這意味着我需要virtualenv構建器始終首先運行並在所有其他構建器之前運行。我怎樣才能做到這一點?

+0

僅當在命令行上給出--virtualenv時是否要更改HOSTPYTHON標誌,還是應該依賴於需求文件是否已更改? – Brady

+0

只有在給出'--virtualenv'的情況下。但沒關係,我拿到了這部分,我只是在這裏列出來澄清我的意圖。重要的一點是讓構建先運行。 –

+0

該標誌僅指出其餘構建是否使用此環境,但如果需求文件發生更改(無論此標誌如何),則應構建該標誌。 –

回答

0

而不是將virtualenv定義爲構建器,您可以考慮將其作爲一個簡單的Python函數,並使用SCons Execute()函數運行它。執行將始終在任何構建者之前執行。

我不知道如何更改構建中的SCons使用的Python版本,因此您可能需要運行SCons兩次。第一次,請檢查--virtualenv命令行參數,如果存在調用Execute()(或始終調用Execute()並在內部檢查cmd行),然後Exit()

+0

無論需求文件是否更改,這將運行構建器,這將花費大量時間。 –

+0

這顯然是可能的,因爲你可以手動取得所有的目標,並取決於這個構建。問題是,是否有一種方便的方式來做到這一點。 –

+0

@AirirRachum,我不明白它取決於需求文件。如果是這樣,那麼你是對的。我問OP了。 – Brady