[英]makefile modification time trickery?
因此,我有一個makefile,在該makefile中是一條規則,該規則首先執行預編譯轉換並修改源文件,然后將其編譯為適當的目標。 我想知道是否有一種欺騙/強迫make的方式,以為實際上並未修改源,因此make僅在用戶修改時才重新編譯,而在make規則修改源時才重新編譯。 我嘗試使用touch
命令在進行修改后返回修改時間戳,但是沒有成功。 有人有什么想法嗎? 謝謝。
完成目標的一種可能方法是創建一個輔助目標 -長度為零的文件,其作用類似於標志,以表明您是否已完成要完成的工作,並具有執行預編譯的規則根據該文件進行轉換。
我想我對您要做什么有疑問。 為什么要就地進行轉換,而不是讓轉換創建一個中間文件然后進行編譯。
就地轉換可能會出現問題,尤其是在轉換過程不是冪等的情況下。
編輯1
根據您的問題,我會說您可以這樣做:
target.flag: target.original-file
touch target.save -r target.original-file
<do transformation>
touch target.original-file -r target.save
rm target.save
touch target.flag
將touch與“ -r”選項一起使用表示從指定文件中獲取訪問日期。 因此,您將原始文件的日期保存在臨時文件中。 然后進行轉換,然后使用touch從臨時文件中獲取日期,並將其放回到現在轉換的文件上。
這個怎么樣:
foo.target: foo.source
$(TRANSFORM) $<
$(COMPILE) $<
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.