編譯器如何知道何時不需要重新編譯代碼的某些部分,特別是在大型項目中?編譯器如何知道何時不重新編譯?
例如,假設在C++中我們有兩個C++文件和兩個頭文件。頭文件相互依賴。 (它們使用在其他文件中指定的類)。
編譯器是否總是需要解析頭文件(也可能是用於方法實現的C++文件)以獲取類信息以生成兩個C++文件?
我一直以爲,當你在命令提示符下運行編譯器,其輸出的目標文件後立即關閉 - 所以這將是不可能的緩存抽象語法樹或中間代碼。大多數C++編譯器是否知道某個文件何時不需要輸出到目標文件,因此會被跳過?
這通常是構建系統的工作(例如,做),而不是編譯器的。 –
這是例如使與生成文件 – hamon
的幫助下通常它是做了檢查提出的,這是相當複雜的,告訴哪些文件依賴於哪些其他文件... – xanatos