bash – 重复使用Makefile prerequesite中的百分号作为子目录名
我想学习如何在我的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文件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- webservice 调用错误
- SOAP Webservice和RESTful Webservice
- Angular 4 HttpInterceptor:显示和隐藏加载器
- webservice 远程测试
- 发布webservice
- Angular 6 – ERROR TypeError:无法读取undefined的属性“
- AngularJS ui-router是否有任何Typescript定义?
- 从Unix读取而不使用Spring Integration复制到本地时发现的循
- 在Bootstrap 3中使用twitter-bootstrap – col – * – 12(
- 详解Bootstrap的aria-label和aria-labelledby应用