GCC:預編譯標頭檔案的嘗試
阿新 • • 發佈:2019-02-05
公司開發了一個自己的基礎類庫,有著龐大的標頭檔案。為了便於使用並提高編譯速度,嘗試了一下GCC的預編譯標頭檔案的功能:
1、先定義標頭檔案afl.h,內容如下:(afl意味a framework library)
#ifndef _AFL_H_
#define _AFL_H_
//from here to include all head files
#include <Log.h>
#include <DebugUtil.h>
#endif
2、預編譯這個標頭檔案:
g++ -o afl.h.gch -x c++-header -c afl.h -g -Wall -I"libpath..."
使用-x c++-header來說明這個檔案作為C++的預編譯標頭檔案。注意:C和C++的處理方式不一樣,C要使用-x c-header選項。
3、經過上一步,alf.h.gch的這個預編譯的標頭檔案已經產生了。下面是程式碼中的引用方式:
//test.cpp
#include "alf.h"
int main()
...{
LOG("test");
return1;
}
注意:所有的需要庫的地方,都引用alf.h就可以了。
4、編譯這個檔案:
g++ -o test.o -c test.cpp -g -Wall
呵呵,發現編譯的時候相當快,而且不用指定庫的標頭檔案路徑。
1、先定義標頭檔案afl.h,內容如下:(afl意味a framework library)
#ifndef _AFL_H_
#define _AFL_H_
//from here to include all head files
#include <Log.h>
#include <DebugUtil.h>
#endif
2、預編譯這個標頭檔案:
g++ -o afl.h.gch -x c++-header -c afl.h -g -Wall -I"libpath..."
使用-x c++-header來說明這個檔案作為C++的預編譯標頭檔案。注意:C和C++的處理方式不一樣,C要使用-x c-header選項。
3、經過上一步,alf.h.gch的這個預編譯的標頭檔案已經產生了。下面是程式碼中的引用方式:
#include "alf.h"
int main()
...{
LOG("test");
return1;
}
注意:所有的需要庫的地方,都引用alf.h就可以了。
4、編譯這個檔案:
g++ -o test.o -c test.cpp -g -Wall
呵呵,發現編譯的時候相當快,而且不用指定庫的標頭檔案路徑。