首页 > 解决方案 > 递归运行make后更新时间戳

问题描述

我的项目依赖于子文件夹中的其他项目。我想递归地调用 make 以一次性构建所有内容。

我的第一次尝试是这样的:

.PHONY: all make_recursion

all: program

program: submake1/lib submake2/lib

submake1/lib: make_recursion

submake2/lib: make_recursion

make_recursion:
    make -C submake1
    make -C submake2

这不能按预期工作。如果这些项目中的文件发生更改,则每次运行 make 都会执行两个子制作。对于 submake2,如果更新了 submake2/lib,我的程序也会重新构建。如果只更新了 submake1/lib,我必须再次运行 make 来更新程序。

原因是 make 在 make_recursion 之前获取 submake1/lib 的时间戳,但之后不会更新它。我该如何改进呢?

标签: makefile

解决方案


推荐阅读