1
我的項目使用外部軟件包。這些軟件包分佈在tarball中,並且在更新tarball時提取它們的內容。scons:如何根據時間戳提取歸檔文件
例如,我使用boost。相應的外部包是boost.tar.bz2。該軟件包包含頭文件和庫。我想要做的是在更新tarball時自動提取scons的內容。
我可以通過使用「時間戳文件」的Makefile來實現此目的。當壓縮包比時間戳文件更新,歸檔文件自動提取:
all: external-packages
external-packages: boost xml2
boost: .boost-timestamp
xml2: .xml2-timestamp
.boost-timestamp: boost.tar.bz2
@echo updating boost externals
@tar xjf boost.tar.bz2
@touch .boost-timestamp
.xml2-timestamp: xml2.tar.bz2
@echo updating xml2 externals
@tar xjf xml2.tar.bz2
@touch .xml2-timestamp
clean:
rm -rf .*-timestamp boost xml2
我怎樣才能實現與scons的一樣嗎?
我的問題不是解壓縮存檔。我想要做的是在執行任何其他任務之前解壓縮存檔。 我找到了一個解決方案:創建一個「開始」任務,根據所有的拆包任務完成這個「開始」任務,並根據這個「開始」任務完成所有其他任務。但是實現起來非常繁瑣(我的項目非常龐大並且有很多任務),並且在進行「並行」構建(scons --jobs 4)時不起作用。 –
有了scons,你不用考慮前後的問題,它可以通過依賴來解決。如果有什麼依賴於將被解壓縮的文件,則拆包將在之前完成。所以使用UnTar將確保依賴關係圖是正確的,所以你不必擔心之前或之後。 – daramarak
@SergeWeinstock我在回答中添加了一段來指出這個細節。 – daramarak