在下面的简单的例子,我想做一个make dist
,并在distclean
目标之前执行distdebug
和 distrelease
.
.PHONY: distclean
dist: distdebug distrelease
@echo in dist
distdebug: distclean
@echo in distdebug
distrelease:
@echo in distrelease
distclean:
@echo in distclean
Run Code Online (Sandbox Code Playgroud)
不幸的是,尽管使用.PHONY
,distclean只被称为一次:
vagrant@precise32:/tmp$ make dist
in distclean
in distdebug
in distrelease
in dist
Run Code Online (Sandbox Code Playgroud)
我猜Make知道它已经运行了distclean
一次,所以它不再运行它.如何让它distclean
多次运行?
您无法使用常规规则.Make只会一次构建任何给定的目标.您可以使用递归make调用来执行此操作:
distdebug:
$(MAKE) distclean
@echo in distdebug
distrelease:
$(MAKE) distclean
@echo in distrelease
Run Code Online (Sandbox Code Playgroud)
一般而言,以不同方式规划构建是一个好主意,并且将不同类型的构建的目标放入不同的子目录中.这样你就不必在两者之间进行清理.
归档时间: |
|
查看次数: |
1992 次 |
最近记录: |