2013-08-24 54 views
0

我在看Scons源代碼,但似乎無法確定它計算時間戳的位置(沒有找到MD5計算的麻煩)。SCONS時間戳機制

而手冊頁只是指時間戳,並沒有深入討論它的實際情況。也許這對一些人來說顯而易見,但我仍然不清楚這到底意味着什麼。

什麼時間戳?

以下是Scons用於時間戳一致性的方式嗎?

time.ctime(os.path.getmtime(file)) 

基本上檢查文件何時被修改?

然後比較這與什麼在運行時?

回答

3

如果你曾經使用過Make,那麼這個概念應該是很親切的。基本上它比較源和目標的修改時間,如果源更新,它應該重建目標。還有一些SCons在.sconsign.dblite文件內部存儲的文件簽名信息,我不相信可以通過編程方式訪問。

如在SCons Decider() function docs可以看出,行爲可以被配置爲執行下列操作之一(從SCons man page複製):

  • 時間戳較新的(這是典型的製作實用程序的行爲,並可以使用同義詞時間戳的更新版本)
  • 時間戳匹配
  • MD5
  • MD5時間戳
+0

當描述'env.Decider('timestamp-newer')'像'make'一樣行時,scons文檔是誤導性的。 SCons使用存儲在'.scons.dblite'數據庫中的時間戳,在這些數據庫中,像'touch'和'ls'這樣的工具無法訪問它們。這實際上不像'make'那樣不使用數據庫,而是依靠文件系統中的時間戳來決定要做什麼。我還沒有找到一種方法在scons中實際產生類似行爲。 –