Makefile 檔案重新編譯


make 程式是一個智慧的實用程式和工作根據在原始檔中的變化。如果有四個檔案main.cpp,hello.cpp,factorial.cpp和functions.h。這裡所有reamining檔案是依賴functions.h,main.cpp的是依賴於hello.cpp,factorical.cpp。因此,如果做任何改變functions.h然後將重新編譯所有原始檔來生成新的物件檔案。但是,如果做任何改變main.cpp,因為這是不依賴任何其他的過濾,那麼在這種情況下,只有main.cpp檔案將被重新編譯和hellp.cpp factorial.cpp將無法重新編譯。

雖然編譯一個檔案時,MAKE檢查目標檔案和比較時間表帶,如果原始檔有更新的時間戳比目標檔案,然後將生成新的物件檔案,假設原始檔已被改變。


避免重新編譯

有可能是專案包括成千上萬的檔案。有時候可能已經改變了一個原始檔,但不想重新編譯所有依賴於它的檔案。例如,假設新增巨集到一個標頭檔案或宣告,許多其他檔案依賴。假設在標頭檔案中的任何變化需要重新編譯所有相關檔案,但要知道,他們並不需要重新編譯,你寧可不要浪費時間等待他們的編譯。

如果預期改變標頭檔案的問題之前,可以使用`-t'標誌位。這個標誌告訴make命令不執行的規則,而是來標記目標,迄今為止,通過改變它的最後修改日期。遵循以下步驟:

  1. 使用命令'make'來重新編譯真的需要重新編譯原始檔。

  2. 在標頭檔案中進行更改。

  3. 使用命令`-t'來紀念所有的目標檔案為最新。下一次執行make,在標頭檔案中的變化不會引起任何重新編譯。

如果已經改變了標頭檔案的時候,有一些檔案就需要重新編譯,做到這一點已經太晚了。相反,可以使用`-o檔案“的標誌,這標誌著一個指定的檔案作為”old“。這意味著該檔案本身不會被重製並沒有別的其交代將被重製。遵循以下步驟:

  1. 重新編譯原始檔,需要編制獨立的特定標頭檔案的原因,`make -o headerfile'。如果涉及幾個標頭檔案,使用一個單獨的`-o'選項,每個標頭檔案。

  2. 輕觸所有目標檔案使用`make -t'.