Makefile基目标及其依赖

时间:2015-02-17 00:45:09

标签: makefile

我的制作结构如下:

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提供了更好的方法吗?

1 个答案:

答案 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 basemake sub-base,那么您也需要phony targets

.PHONY: base sub-base
base: base.output
sub-base: sub-base.output