对于依赖项名称,是否可以展开%两次?
我把项目分成几个部分,每个部分都在自己的文件夹和同名文件中,例如。
sections/first/first.csections/hello/hello.c等。
现在我想为每个部分在另一个文件夹中构建一个目标

SECTIONS = $(wildcard sections/*/*.c)
TARGETS = $(addprefix build/,$(notdir $(SECTIONS)))

$(TARGETS): build/%.c: sections/%/%.c
    # do something

但是问题是build只扩展了一次,所以我最终得到了一个错误
make: *** No rule to make target 'sections/first/%.c', needed by 'build/first.o'.

是否有办法将%扩展两次?

最佳答案

不可能让%扩展一次以上。如果你需要这个,你需要做一些更奇特的事情:你可以使用secondary expansioneval。例如,这应该有效:

.SECONDEXPANSION:
$(TARG) : build/%.c : source/$$*/$$*.c
        @echo copy $< $@

有关更深入的讨论,您可以查看these blog posts

关于c - 两次扩展模式以获得依赖性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34575589/

10-09 06:46