转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <xianjimli@gmail.com>
习惯了automake之后,再用Android的编译系统,就是感觉不爽。编译一个小模块也等上几分钟,有次实在受不了,看了一下它的实现,发现它对任何一次编译都要查找所有的Android.mk:
subdir_makefiles=$(shell cat build/tools/Android.mk.cache)
我把build/core/main.mk修改了一下,增加了一个cache:
subdir_makefiles
=$(shell cat build
/tools
/Android
.mk
.cache
) ifeq ($(subdir_makefiles),) $(info "no cache. create build/tools/Android.mk.cache") $(shell build
/tools
/findleaves
.sh
--prune
="./out" . Android
.mk
> build
/tools
/Android
.mk
.cache
) subdir_makefiles
=$(shell cat build
/tools
/Android
.mk
.cache
) else $(info "use cache: build/tools/Android.mk.cache") endif
或者:
487 ifneq ($(ONE_SHOT_MAKEFILE),)
488 else
489 ifneq ($(CASH_MK),true)
490 subdir_makefiles += \
491 $(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=. git $(subdirs) Android.mk)
492 else
493 subdir-makefiles-cash := $(shell cat build/subdir_mk_cash)
494
495 ifeq ($(subdir-makefiles-cash),)
496 $(warning No .mk cash ,create now !)
497 subdir_makefiles += \
498 $(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=. git $(subdirs) Android.mk)
499 mk-to-file := $(shell echo $(subdir_makefiles) > build/ subdir_mk_cash)
500 else
501 $(warning Using cash mk !)
502 subdir_makefiles := $(shell cat build/subdir_mk_cash)
503 endif
504 endif
505 endif
速度终于可以接受了。