GCC项目编译速度优化

GCC项目编译速度优化
   我们的新项目是在linux平台下运行的,本人是Linux和windows下都开发过,我呆的2个linux后台项目都是所有代码放在一块,编译成一个可
执行文件,基本不考虑编译成动态库,所有代码的头文件依赖也是一团糟,随着项目的增大,编译速度越来越慢,到后来编译一个项目4进程同时编译都需要10来分钟。
 
  其实分析下可以发现,主要的编译速度损耗在头文件上,尤其是模板相关的头文件。VC有一个预编译头文件技术,将常用的公共头文件放在一起,预先编译成pch文件,这样
可以加快编译速度。gcc到底有没有类似技术呢,打开gcc的手册搜索了precompiled,发现还真有相关介绍,使用方法也很简单。
 
主要是以下步骤:
  1、在项目下建立一个 stdafx.h的文件,包含了大部分公共头文件。在每个cpp最开始都#include "stdafx.h"。cpp文件包含了这个预编译头文件后,就可以将原来和
stdafx .h 里头文件重复的内容删除了,尤其是模板相关的头文件,另外,非PCH的头文件里尽量少包含其他头文件。     
  2、修改makefile文件, 加入OBJ对 gch的依赖,用一个简单的项目做示例,一看就明白
   
TARGET=TimerTest
PCH=stdafx.h.gch
PCH_H=stdafx.h
OBJ=stdafx.o TimerManager.o TimerTest.o

%.o:%.cpp
    g++ -Wall -c -g $^ -o $@

$(TARGET):$(OBJ)
    g++ -g  $^ -o $@


pch.d:stdafx.cpp
    g++ -g -MM stdafx.cpp |sed 's/stdafx.o/stdafx.h.gch/'>$@

-include pch.d

$(OBJ):$(PCH)
$(PCH):
    g++ $(PCH_H)

clean:
    rm -f $(OBJ) $(PCH)

    完成以上内容后,make clean,再重新编译,初步估计只需要2分钟!!  整整优化了4-5倍。
      

你可能感兴趣的:(GCC项目编译速度优化)