我需要处理具有特定扩展名的所有文件,并将结果打包成一个存档。有没有办法make
这样做?
例如,假设我需要获取所有 .w 文件并为每个文件生成 .n 文件,其中任何元音都转为句点,然后{{1}结果。如果我按如下方式创建tar
:
Makefile
novowels.tar: %.n
tar cf $@ $^
%.n: %.w
sed -e "s/[aeiou]/./g" > $@ < $<
(毫不奇怪)如果目录中没有 .n 文件,则返回以下内容:
make
我可以致电make: *** No rule to make target '%.n', needed by 'novowels.tar'. Stop.
,它会从 the.w 创建文件(假设存在),如果我再调用make the.n
它将被包含在内在档案中。
问题是:如何(最好)让make
意识到有一大堆 .w 文件需要转换为 .n 文件首先是什么?
答案 0 :(得分:3)
以此为例:
ALLFILES_IN := $(wildcard *.w)
ALLFILES_OUT := $(ALLFILES_IN:.w=.n)
$(info In : $(ALLFILES_IN))
$(info Out: $(ALLFILES_OUT))
%.n: %.w
cat $< > $@
all.tar: $(ALLFILES_OUT)
@echo "Tar:" $^
也许你会发现类似的东西:
CPP_FILES := $(wildcard src/*.cpp)
OBJ_FILES := $(addprefix obj/,$(notdir $(CPP_FILES:.cpp=.o)))
被盗: Can I compile all .cpp files in src/ to .o's in obj/, then link to binary in ./?