make的技巧是从结束开始,用你想要创建的东西,然后向后走向开始,看看事情已经发生了什么变化。
那么,到底什么是:你想制造什么?根据你的例子,我们将推断你想创建一个名为lectures.tar.gz
的压缩tar文件。所以,我们需要一个目标:
lectures.tar.gz:
什么进入tar文件? PDF文件,而您也已经发现了如何计算到OBJ
变量,所以那些东西必须被列为lectures.tar.gz
先决条件:
lectures.tar.gz: $(OBJ)
什么是该目标的秘诀是什么?它应该创建一个包含所有文件的名称的tar文件。一种方法是这样的:
lectures.tar.gz: $(OBJ)
tar czf lectures.tar.gz $(OBJ)
的另一种方法,使用automatic variables更通用的,应该是:
lectures.tar.gz: $(OBJ)
tar czf [email protected] $^
现在,你如何创建OBJ
文件?对于每一个你需要从.ppt
版本复制它。由于您使用的是GNU make(通过使用wildcard
等功能可以证明),您可以使用pattern rule来实现此功能;该模式是这样的:
%.pdf : %.ppt
cp $< [email protected]
这种模式告诉make如何从任意文件X.ppt
建立一个文件X.pdf
,具有cp
命令:在这种情况下,自动变量$<
和[email protected]
需要,因为你不知道名。这是一个隐含的规则,因为名称没有明确列出,但由模式隐含。
现在您如何构建.ppt
文件?你不这样做,因为它们是源文件,所以你完成了!
哦,是的,你为什么要这样做?为什么不是传统的shell脚本?祝你好运。 – shellter
@shellter我已经做了一个shell脚本。这是作业。我必须创建一个shell脚本和一个makefile,两者完全相同,我不知道如何处理Makefile –