免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2231 | 回复: 0
打印 上一主题 下一主题

[make] 一条命令同时生成了多个目标,规则怎么写? [复制链接]

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-13 22:40 |只看该作者 |倒序浏览
是这样的,要给latex写一个makefile,规则是这样的:

对.tex文件执行latex命令,生成.aux, .out, .dvi文件,但是因为缺少了.bbl文件,所以.dvi文件不正确。

对刚刚生成的.aux文件执行bibtex命令,生成需要的.bbl文件

对.bbl, .aux, .tex文件再执行一次latex命令,这时同样会生成.aux, .out, .dvi文件。这时这三个文件都是正确的了。

对.dvi文件执行dvipdfm,生成.pdf文件。工作完成。


所以,.pdf依赖.dvi
.bbl 依赖 .aux
.aux, .out 依赖 .tex

那么,在一次完全构建中,latex会执行两次,第一次是为了得到aux文件,从而生成bbl,第二次是为了得到.dvi文件。

现在的问题是,如果之前已经构建了一次pdf文件了,但因为上次第二次执行latex的时候同样会更新.aux文件。这样.aux文件会比.bbl文件新,从而导致不必要的latex的第二次执行。这么解决这个问题呢??

目前的makefile是这样的:
$(TARGET) : frame.pdf
        $(MV) $< $@

frame.pdf : frame.dvi
        $(DVIPDFM) $<

frame.dvi : frame.aux frame.bbl
        $(LATEX) frame

frame.bbl : frame.aux $(BIBS)
        $(BIBTEX) $<

frame.aux : frame.tex $(INCLUDES) $(BBS)
        $(LATEX) $<
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP