如何使用make来转换​​子目录中的文件?

时间:2015-06-08 15:02:13

标签: makefile

我有一堆子目录的目录。每个子目录都包含一个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文件的所有子目录的上述结果,无论其名称如何,而不必明确列出它们?

干杯!

1 个答案:

答案 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)