我需要根据一些子系统名称计算文件路径。请参阅下面的 MWE。请问有没有更简单的方法来实现同样的目标?请参阅下面的我的 aa、ab、ac 和加入方法。
我不热衷于 $(subsystem) 的双重使用,因为它依赖于 make 以相同的顺序执行。我试过使用 $(patsubst) 但它只替换了 % 的第一个实例。请问有什么提示吗?
#
## Given some subsystem names
subsystem := pi_sub_chris \
pi_sub_rob \
pi_sub_greg
#
## And an output directory
dir_export := ../pi_sw/export
#
## Calculate a file path in export directory to be made
## Is there a better way to do this!?
aa := $(addprefix $(dir_export)/,$(subsystem))
ab := $(addsuffix /a2l/, $(aa))
ac := $(addsuffix .a2l, $(subsystem))
files_to_be_made := $(join $(ab), $(ac))
.PHONY :
go : $(files_to_be_made)
@echo Done!
%.a2l :
@echo A perl script is run here to generate file $@
正确输出:
A perl script is run here to generate file ../pi_sw/export/pi_sub_chris/a2l/pi_sub_chris.a2l
A perl script is run here to generate file ../pi_sw/export/pi_sub_rob/a2l/pi_sub_rob.a2l
A perl script is run here to generate file ../pi_sw/export/pi_sub_greg/a2l/pi_sub_greg.a2l
Done!