我的
Makefile
有适用于每个子目录的规则。当这样的规则具有依赖性时,我显然希望这些依赖性
我能想到的最好的例子是下面的例子。它有效,但看起来冗长且难以阅读。有没有更程序化的方法来解决这个问题?
BUILDDIR = build
BCFILES = file1.bc file2.bc file3.bc
...
BCFILES_STARED = $(patsubst %, */$(BUILDDIR)/%, $(BCFILES))
*/$(BUILDDIR)/my_program.bc: $(BCFILES_STARED) */build
llvm-link $(patsubst %, $(@D)/%, $(BCFILES)) -o $@
我真的不清楚你想做什么。但也许是这样的:
BUILDDIR = build
BCFILES = file1.bc file2.bc file3.bc
SUBDIRS := $(wildcard */.)
PROGRAMS := $(patsubst %/.,%/$(BUILDDIR)/my_program.bc,$(SUBDIRS))
all: $(PROGRAMS)
.SECONDEXPANSION:
%/my_program.bc: $$(addprefix $$(@D)/,$$(BCFILES))
@mkdir -p $(@D)
llvm-link $^ -o $@