我想知道怎樣的前提條件添加到規則與GNU創建一個空的配方。這是我爲解釋問題所做的一個簡短例子。我有一個Test.c文件,它依賴於某個文件header1.h,它包含另一個文件header2.h。這是make文件:先決條件,使規則與空方
Test : Test.c header1.h
gcc -o Test Test.c
header1.h : header2.h
最後一行不爲空它包含一個製表符。現在假設我運行make並創建了Test。之後我改變了header2.h。如果我再次運行make,則表示Test已經更新。因爲header2.h比header1.h新,所以我期望make重做Test。
如果我添加一個簡單的食譜到最後一條規則是這樣
Test : Test.c header1.h
gcc -o Test Test.c
header1.h : header2.h
echo foo
化妝行爲如我所料。我還嘗試在先決條件列表中的header2.h後添加分號,但這沒有幫助。
謝謝,但問題更多的是關於爲什麼如果一個虛擬的規則添加類似觸摸$ @化妝的行爲不同。看起來沒有規則,在處理規則後,header1的時間戳不會被改變。 – Max1
@最大值1'觸摸$ @'會的工作,因爲它更新header1.h'的'時間戳,您的示例用'回聲foo',另一方面應該不會像你上面寫的,然後再次嘗試運行你的makefile確保只有'header2.h'比'Test'更新,你會發現'Test'實際上沒有被重新編譯。 – user657267
感謝'touch $ @'實際上正是我所期待的。 – Max1