在 makefile 中使用 all 调用不同的目标

在 makefile 中使用 all 调用不同的目标

我写了一个makefile如下所示:

.PHONY: clean_lib all

a: lib
        make [email protected]

c: lib
        make [email protected]

clean_lib:
        rm -f lib

all: a clean_lib c

当我打电话时,make all我希望“a”目标构建 a liba.exe然后“清理”它lib,然后调用“c”。这将再次构建lib“c”并构建c.exe.

这里的a.exeandc.exe仅在构建时才构建lib。问题是,在“clean”之后,lib我想要为“c”重建的内容没有构建,因此 c.exe无法构建。

有人可以帮助我吗?

答案1

我不明白为什么你需要lib在中间清理。我认为无需清洁即可使用。

.PHONY: all

lib: somesource
        make lib

a: lib
        make [email protected]

c: lib
        make [email protected]

all: a c

a和都c依赖于lib.每当您想要构建 时ac或者两者都lib将被构建。一旦构建完成,就不需要再次构建,除非somecode更改其源代码 ( )。

这就是如何生成文件工作时,它们会跟踪依赖项,并且仅当它们所依赖的事物的修改时间比目标更新时才需要重建某些内容。

相关内容