【发布时间】:2010-10-23 09:58:15
【问题描述】:
我有一个生成文件,然后调用另一个生成文件。由于这个makefile调用了更多的makefile来完成它的工作,它并没有真正改变。因此,它一直认为该项目已构建并且是最新的。
dnetdev11 ~ # make
make: `release' is up to date.
如何强制 makefile 重建目标?
clean = $(MAKE) -f ~/xxx/xxx_compile.workspace.mak clean
build = svn up ~/xxx \
$(clean) \
~/cbp2mak/cbp2mak -C ~/xxx ~/xxx/xxx_compile.workspace \
$(MAKE) -f ~/xxx/xxx_compile.workspace.mak $(1) \
release:
$(build )
debug:
$(build DEBUG=1)
clean:
$(clean)
install:
cp ~/xxx/source/xxx_utility/release/xxx_util /usr/local/bin
cp ~/xxx/source/xxx_utility/release/xxxcore.so /usr/local/lib
注意:删除姓名是为了保护无辜者
最终固定版本:
clean = $(MAKE) -f xxx_compile.workspace.mak clean;
build = svn up; \
$(clean) \
./cbp2mak/cbp2mak -C . xxx_compile.workspace; \
$(MAKE) -f xxx_compile.workspace.mak $(1); \
.PHONY: release debug clean install
release:
$(call build,)
debug:
$(call build,DEBUG=1)
clean:
$(clean)
install:
cp ./source/xxx_utillity/release/xxx_util /usr/bin
cp ./dlls/Release/xxxcore.so /usr/lib
【问题讨论】:
-
Lodle,由于这是一个经常访问的问题,您想编辑该问题以使其更现代吗? (看起来
.PHONY不是你唯一的问题,你不应该将解决方案编辑到问题中,或者至少不再是。)