我有一堆子目录的目录。每个子目录都包含一个traj.dat文件。我想使用Makefile来确保将文件traj.dat转换为不同的格式,并将输出文件打印在与原始文件相同的子目录中。
因此,如果我想指定子目录的名称,我可以使用:
subdir1/traj.dat.xyz: subdir1/traj.dat
my_convert subdir1/traj.dat subdir1/traj.dat.xyz
subdir2/traj.dat.xyz: subdir2/traj.dat
my_convert subdir2/traj.dat subdir2/traj.dat.xyz
等等。
如何获取包含traj.dat文件的所有子目录的上述结果,无论其名称如何,而不必明确列出它们?
干杯!
答案 0 :(得分:0)
假设您正在使用GNU make,请尝试:
DATFILES := $(shell find . -name traj.dat)
OUTFILES := $(addsuffix .xyz,$(DATFILES))
all: $(OUTFILES)
%.dat.xyz : %.dat
my_convert $< $@
你对“子目录”的意思并不十分清楚;如果您只是意味着直接子目录,您可以使用它而不是shell
函数,这更有效(并且适用于Windows):
DATFILES := $(wildcard */traj.dat)