加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 重复使用Makefile prerequesite中的百分号作为子目录名

发布时间:2020-12-15 22:36:56 所属栏目:安全 来源:网络整理
导读:我想学习如何在我的makefile目标的先决条件中重用%符号,假设目标是X.pdf,并且先行项目在X / X.tex中. 详细说来,我目前有一个像这样的makefile: all: foo.pdf%.pdf: %.tex pdflatex $*.tex 我还有一个文件foo.tex,当我键入make时,它将通过运行pdflatex foo.
我想学习如何在我的makefile目标的先决条件中重用%符号,假设目标是X.pdf,并且先行项目在X / X.tex中.

详细说来,我目前有一个像这样的makefile:

all: foo.pdf

%.pdf: %.tex
    pdflatex $*.tex

我还有一个文件foo.tex,当我键入make时,它将通过运行pdflatex foo.tex来生成foo.pdf.

现在由于各种原因我无法控制,我的目录结构发生了变化:

my_dir
|- Makefile
|- foo
   |- foo.tex

我想修改我的Makefile,这样当它尝试生成X.pdf时,它会查找文件X / X.tex.

我尝试了以下(我试图把’%/%.tex’告诉它寻找foo / foo.tex):

all: foo.pdf

%.pdf: %/%.tex
    pdflatex $*/$*.tex

但是,这会产生:

No rule to make target `foo.pdf',needed by `all'. Stop.

%.pdf也是如此:$* / $*.tex.

如果我将%/%.tex更改为foo /%.tex它会按预期工作,但我不想在那里硬编码foo,因为将来我会做所有:foo.pdf吧. pdf,它应该寻找foo / foo.tex和bar / bar.tex.

我对Makefiles很新(经验仅限于根据我的需要修改其他人),并且从未做过一个超过绝对基本的,所以如果有人能给我一个有帮助的指针(我真的不知道)要在Makefile文档中搜索哪些单词 – 唯一看起来很有前途的是%和$*,这是我无法工作的.

解决方法

您可以使用VPATH指定要搜索的目录列表.

示例makefile:

# Find all tex files
tex := $(shell find -iname '*.tex')

# Make targets out of them
PDFS := $(notdir $(tex:%.tex=%.pdf))
# specify search folder
VPATH := $(dir $(tex))

all : $(PDFS)

%.pdf : %.tex
        pdflatex $<

甚至更好的是使用vpath(小写):

vpath %.tex $(dir $(tex))

它只会查找这些目录中的.tex文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读