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命令不運行的規則,而是來標記目標,迄今為止,通過改變它的最後修改日期。遵循以下步驟:
-
使用命令'make'來重新編譯真的需要重新編譯源文件。
-
在頭文件中進行更改。
-
使用命令`-t'來紀念所有的目標文件為最新。下一次運行make,在頭文件中的變化不會引起任何重新編譯。
如果已經改變了頭文件的時候,有一些文件就需要重新編譯,做到這一點已經太晚了。相反,可以使用`-o文件“的標誌,這標誌著一個指定的文件作為”old“。這意味著該文件本身不會被重製並冇有彆的其交代將被重製。遵循以下步驟:
-
重新編譯源文件,需要編製獨立的特定頭文件的原因,`make -o headerfile'。如果涉及幾個頭文件,使用一個單獨的`-o'選項,每個頭文件。
-
輕觸所有目標文件使用`make -t'.