对于大型项目,提高项目的编译速度有着非常重要的意义。
从 Makefile 中看,一个可以改善编译效率的地方与其中的隐式规则有关
隐式规则即:make 自带的编译规则,如生成 .o 文件的规则
%.o : %.c
$(CC) -c $(CPPFLAGS) $(CFLAGS) $^
而我们在前面定义的生成 .o 文件的规则即 显式规则。
这种隐式规则在大型项目中存在一个副作用,如生成的 .o 文件无法指定路径。
所以,如果一个项目没有采用隐式规则,那么,最好告诉 make, “请不要为我的项目查找隐式规则,否则太浪费时间了”
huge / build / Makefile
.PHONY : all clean
ROOT = $(realpath ..)
DIRS = $(ROOT)/code/foo/src\
$(ROOT)/code/bar/src\
$(ROOT)/code/huge/src
RM = rm
RMFLAG = -rf
RMS = $(ROOT)/build/exes $(ROOT)/build/libs
all clean:
@set -e;\
for dir in $(DIRS);\
do \
cd $$dir && $(MAKE) -r ROOT=$(ROOT) %@;\
done
@set -e;\
if["$(MAKECMDGOALS)" = "clean"]; then $(RM) $(RMFLAG) $(RMS); fi
@echo ""
@echo ":-) Completed"
@echo ""
参考文献:《专业嵌入式软件开发》李云·著
2016年7月6日,星期三