2015-09-05 36 views
2

SCons是否有一種簡單的方法來創建一個目標,如果指定的文件被驗證爲不存在,則該目標被認爲是最新的? (當然,有如果它存在其刪除該文件建設者...)SCons - 「刪除」文件的目標?

例如:

b_file = env.Command(「文件」,[「文件1」,「文件2」 「文件3」], 「集結文件-o $目標$源」)

env.Depends(b_file,env.FileMustNotExist( 「文件4」))

的想法是,建立前「文件「,SCons將確保不僅存在」file1「,」file2「和」file3「,而且」file4「不存在。

我知道,對於這種特殊情況,我可以通過在命令的開頭添加「rm -f file4;」來逼近我想要的內容,但這不完全相同。特別是,如果我將「rm」命令添加到構建器,然後在SCons外部創建「file4」,重新運行SCons將不會刪除「file4」,除非其中一個源已更改。

我想要創建「file4」並重新運行SCons會導致簡單地刪除「file4」,並指出現在構建「文件」。

回答

0

據我所知,這是設計中沒有預見到的,因此也不可能。請注意SCons是如何面向filebuild系統,所以它的主要任務是創建文件...而不是刪除它們。

在新版本中有僞目標,它用於構建操作,但不會創建實際的輸出文件...但如果我沒有記錯的話,它不能刪除文件。

因此,看起來好像「rm -f文件」策略仍然是最好的選擇。儘管如此,您可能希望使用Python的os.path.isfileos.unlink,以便在不同的平臺上保持兼容。