我的制作结构如下:
base :
build.sh base.output
//# if base.output is newer than sub-base.output by 1 minute then build the below -- How do i do this ?
sub-base :
build.sh sub-base.output
基本上,如果基础文件夹/目标更改了所有需要构建的相关文件夹/目标。
我在考虑编写一个shell脚本来检查时间戳,但是makefile提供了更好的方法吗?
答案 0 :(得分:1)
这就是makefile所做的。这是他们的目的。
只需使用以下内容作为您的makefile。
base.output:
build.sh base.output
sub-base.output: base.output
build.sh sub-base.output
然后运行make base.output
将运行该配方,make sub-base.output
将运行build.sh sub-base.output
但仅当sub-base.output
早于base.output
。
您应该在其目标行上列出base.output
的所有先决条件,以使make能够正确处理。
或者,如果没有,那么您需要使用force target。
FORCE: ;
base.output: FORCE
build.sh base.output
强制make构建base.output
,即使它已经存在。
如果您希望能够说出make base
或make sub-base
,那么您也需要phony targets。
.PHONY: base sub-base
base: base.output
sub-base: sub-base.output