具有顺序编号子目录的Makefile
我在主存储库中有一些子目录,称为assignment_1,assignment_2,…,assignment_n。 我正试图编写一个Makefile来编译这些子目录中的所有TeX文件 这是我目前为止所做的,但它不起作用:具有顺序编号子目录的Makefile,makefile,latex,gnu,Makefile,Latex,Gnu,我在主存储库中有一些子目录,称为assignment_1,assignment_2,…,assignment_n。 我正试图编写一个Makefile来编译这些子目录中的所有TeX文件 这是我目前为止所做的,但它不起作用: .PHONY: papers clean PUBLISH_DIR := publish TEX_DIR := .tex SRC_DIR := assignment_$(wildcard *) SRC_FILES := $(wildcard $(SRC_DIR)/*.tex)
.PHONY: papers clean
PUBLISH_DIR := publish
TEX_DIR := .tex
SRC_DIR := assignment_$(wildcard *)
SRC_FILES := $(wildcard $(SRC_DIR)/*.tex)
CC := xelatex
FLAGS := -shell-escape -output-directory=$(TEX_DIR)
all: $(patsubst $(SRC_DIR)/%.tex, $(PUBLISH_DIR)/%.pdf, $(SRC_FILES))
$(PUBLISH_DIR)/%.pdf: $(SRC_DIR)/%.tex
mkdir -p $(TEX_DIR)
$(CC) $(FLAGS) $<
$(CC) $(FLAGS) $<
mkdir -p $(PUBLISH_DIR)
mv $(TEX_DIR)/*.pdf $(PUBLISH_DIR)/
clean:
rm -rf $(PUBLISH_DIR) $(TEX_DIR)
与
它工作得很好,但(显然)只与赋值_1中的TeX文件一起工作
除了遍历子目录之外,在这个Makefile中还有什么我可以改进的吗?我认为您应该修改您的通配符:
SRC_DIR := assignment_$(wildcard *)
到
我认为您应该修改通配符:
SRC_DIR := assignment_$(wildcard *)
到
如果$(通配符*)
扩展到1 2 3
,则分配$(通配符*)
将扩展到分配_12 3
,这显然不是您想要的
试试这个:
SRC_DIR := $(addprefix assignment_,$(wildcard *))
将赋值
前缀添加到每个单词的开头。如果$(通配符*)
扩展到1 2 3
,则赋值$(通配符*)
将扩展到赋值_12 3
,这显然不是您想要的
试试这个:
SRC_DIR := $(addprefix assignment_,$(wildcard *))
将赋值
前缀添加到每个单词的开头
SRC_DIR := $(addprefix assignment_,$(wildcard *))