簡體   English   中英

Makefile編譯所有文件,即使更改是在單個c ++文件中完成的

[英]Makefile compiles all files, even though changes are done in a single c++ file

我從事的項目涉及大量的c++文件。 我出於好奇而問這個問題。

通常,在完成make之后,將修改后的特定c++文件單獨編譯為后續make 有時,我在單個c++文件結果編譯甚至幾乎所有其他c++文件和最終可執行文件中都經歷了很小的修改。

Makefile編譯其他未修改的c++文件的原因是什么?

因此,這里出現了在makefilemakefile timestamping的概念。 比如說make rule就是這樣

output: dep1
     rule-1
dep1: dep2
     rule-2

當您執行makefile make首先檢查output文件的timestamp (如果output文件不存在,那么默認情況下將執行規則)。 假設output是在1200hrs創建的,則您在1205hrs更改文件dep1並執行make ,然后make發現目標輸出早於其depepndency dep1因此它將執行rule-1。 如果假設output在1300hrs創建, dep1在1230hrs,現在你更新dep2在1310hrs,並執行make 您可以在此處看到,因為執行了dep1早於dep2 Rule-2,並且dep1的時間戳,現在output早於dep1因此執行了rule-1。 即使output不直接依賴於dep2 ,您也可以在這里看到,在更新dep2時它會重新dep2

這就是您的情況。 檢查makefile然后嘗試檢查所編輯文件的依賴性。 取決於您編輯的文件的目標將被重建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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