2011-03-24 60 views

回答

5

您正在通過隱含規則(在這種情況下,您自己定義的隱式規則)鏈的方式製作a.txt。所以Make認爲foo.logintermediate file,並且在它達到目的時刪除它。您可以通過聲明foo.log次要目標覆蓋此行爲:

.SECONDARY: foo.log 
+1

.SECONDARY:%.log#does not work,我該怎麼辦才能使規則一般? – 2011-03-25 00:18:20

+5

如果您想要保留所有中間體,只需聲明.SECONDARY的目標:不需要依賴關係。或者,您可以使用通配符.PRECIOUS。即.PRECIOUS:%.log – Sean 2011-03-25 00:22:07

+1

@Sean:奇怪的是通配符與PRECIOUS協同工作,但與SECONDARY協同工作... – Beta 2011-03-25 01:20:09

22

默認情況下,GNU化妝刪除中間文件。由於%.txt取決於%.log,因此希望刪除.log文件。爲了防止這種行爲,您可以使用.PRECIOUS或.SECONDARY將它們標記爲珍貴。

.PRECIOUS: foo.log 

此外,您可以使它通過使用.SECONDARY沒有依賴關係刪除中間文件。

.SECONDARY: 

請參閱this部分的GNU make手冊。

相關問題