假設存在下圖所示的項目目錄結構。
如果存在如下包含頭文件的代碼,則大多的項目中需要通過“-I foo”和“-I bar”指明兩個搜索頭文件的目錄。
foo.c #include "bar.h"
bar.c #include "foo.h"
然而,當項目規模很大存在很多的目錄時,這種方式將顯著地降低項目的編譯速度。因爲“-I”選項使用得越多,意味着編譯每一個C文件時所需進行頭文件搜索的目錄也越多。
爲了避免這一問題,我們可以將代碼改爲:
foo.c #include "bar/bar.h"
bar.c #include "foo/foo.h"
如此一來,整個項目只需一個“-I src”選項就行了。
促使我意識到這一問題,是因爲前段時間看到Blink開源項目的一封郵件,其中談到採用上面的第二種方法後,在Windows上編譯Blink的速度提高了40%。