簡體   English   中英

makefile修改時間的技巧?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM