我们的新项目是在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倍。
posted on 2011-03-19 16:39
feixuwu 阅读(4267)
评论(5) 编辑 收藏 引用 所属分类:
游戏开发