Makefile。依赖,使更多的依赖

Makefile。依赖,使更多的依赖,makefile,Makefile,考虑这个makefile: srcs = 1.src %.compiled: create_srcs $(srcs) @echo $@ depends on: $^ create_srcs: $(eval srcs = $(srcs) 2.src) @echo srcs: $(srcs) %.src: @echo src: $@ 如果执行,则输出: c:\>make file.compiled srcs: 1.src 2.src src: 1.src

考虑这个makefile:

srcs = 1.src

%.compiled: create_srcs $(srcs)
    @echo $@ depends on: $^

create_srcs:
    $(eval srcs = $(srcs) 2.src)
    @echo srcs: $(srcs)

%.src:
    @echo src: $@
如果执行,则输出:

c:\>make file.compiled
srcs: 1.src 2.src
src: 1.src
file.compiled depends on create_srcs 1.src
如何使
%.编译的
也依赖于
2.src


另外,如果有必要,在我的real makefile中,将一些可能包含源代码的zip解包,并将“srcs”变量定义为
srcs=$(shell find…
)<代码>%.编译后的
不是最终目标,尽管创建_srcs
是第一个目标。

代码>$(eval srcs=…)是无用的,因为它是配方的一部分,在运行时,生成文件已经被完全解析。@MichaelLivshin我确实意识到了这一点,但你的评论把我推向了正确的方向:)。似乎我需要递归make在这里重新分析文件…虽然这是一个非常老的问题,但不知怎么的它又回来了。如果还有兴趣:你能描述一下在另一个目标中引入
2.src
ad hoc的逻辑吗?这个新目标是在配方执行过程中动态出现的,还是在
make
开始时就知道
2.src
最终会成为目标?