对于依赖项名称,是否可以展开%
两次?
我把项目分成几个部分,每个部分都在自己的文件夹和同名文件中,例如。sections/first/first.c
、sections/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 expansion或eval
。例如,这应该有效:
.SECONDEXPANSION:
$(TARG) : build/%.c : source/$$*/$$*.c
@echo copy $< $@
有关更深入的讨论,您可以查看these blog posts。
关于c - 两次扩展模式以获得依赖性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34575589/