我写了一个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 lib
,a.exe
然后“清理”它lib
,然后调用“c”。这将再次构建lib
“c”并构建c.exe
.
这里的a.exe
andc.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
.每当您想要构建 时a
,c
或者两者都lib
将被构建。一旦构建完成,就不需要再次构建,除非somecode
更改其源代码 ( )。
这就是如何生成文件工作时,它们会跟踪依赖项,并且仅当它们所依赖的事物的修改时间比目标更新时才需要重建某些内容。