VS2019自定義預編譯頭文件


每次編譯項目時,編譯器會把所有相關的文件復制進項目中並進行編譯,但其實,這些被編譯的文件中總有一些文件是不會變動的,比如標准庫、STL和一些我們自己寫的但基本不會更改的頭文件等等,可是這些文件卻要在每次編譯時都被重新包含進項目中並重新編譯。可不可以讓它們只被編譯一次?這樣就可以大大縮短編譯時間了。事實上確實可以,我們可以通過預編譯頭文件的方式做到這點。

以VS2019為例,進行自定義預編譯頭只需要三步:

  1. 創建文件:將希望預編譯的頭文件都包含到一個頭文件中,這里我們將它命名為mypch.h(pch: pre-compiled header);再新建一個cpp文件,命名為mypch.cpp,在其中包含mypch.h。
  2. 設置屬性:在mypch.cpp的屬性頁中,找到C/C++ -> 預編譯頭,預編譯頭選擇“創建(/Yc)”,預編譯頭文件填寫我們剛剛創建的mypch.h。在項目的屬性頁中按照2中方法找到預編譯頭,預編譯頭選擇“使用(/Yu)”,預編譯頭文件填寫mypch.h。
  3. 在項目的每個cpp文件的最開始加上#include "mypch.h"

這就搞定了。然后就可以多次更改、編譯項目測試編譯時長看看效果如何,越是頭文件多的項目速度提升會越明顯。

但是,把所有頭文件都進行預編譯並不意味着優化,相反,這可能拖慢編譯速度。預編譯頭之所以可以大幅縮短編譯時間,在於它提前將一部分頭文件編譯好了,因此當你按下“Ctrl+B”后需要進行的工作就少了許多。但是,如果預編譯頭文件中的某個文件的內容進行了更改的話(或許只是在某個頭文件里加了個空行),那么預編譯頭文件中的所有文件都要進行重新編譯。

因此,只將不常變動的頭文件放進預編譯頭中,比如標准庫、STL或其他第三方庫,自己寫的頭文件最好不要放進去。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM