Makefile 生成具有多个潜在依赖项的文件
我正在尝试为静态页面生成器创建一个make文件,到目前为止,我正在使用Makefile 生成具有多个潜在依赖项的文件,makefile,Makefile,我正在尝试为静态页面生成器创建一个make文件,到目前为止,我正在使用jinja和pandoc,其想法是拥有这样的文件结构 . |-content |-public |-templates |-Makefile 我遇到的问题(至少我认为是这样)是,根据我的说法,语法是 # For a final result target: dependency commands # A rule for dependency dependency: commands 我的依赖项在内容目
jinja
和pandoc
,其想法是拥有这样的文件结构
.
|-content
|-public
|-templates
|-Makefile
我遇到的问题(至少我认为是这样)是,根据我的说法,语法是
# For a final result
target: dependency
commands
# A rule for dependency
dependency:
commands
我的依赖项在内容
目录中,我的目标在公共
目录中,该目录可能存在,也可能不存在,我生成的几乎所有文件都是htm
文件,在这种情况下,如果目标是public/some/route/to/file.htm
,则依赖项将是这两个content/some/route/to/file.(htm | md)
中的任意一个
我可以通过遍历内容目录和更改扩展来轻松生成
我应该如何正确地编写规则呢
-Make知道每次我执行Make
“监视”更改的位置,因为现在它指出每个文件都是最新的
-如何正确指示文件对其内容文件的依赖关系。此规则:
public/%: content/%
什么都不做,因为没有配方的模式规则不会定义新的模式规则
很简单,你应该写两条这样的规则:
public/%.htm: content/%.md:
# Pandoc script
pandoc -i $< -o $@
public/%.htm: content/%.htm
# Jinja Script
public/%.htm:content/%.md:
#潘多克脚本
潘多克-i$<-o$@
public/%.htm:content/%.htm
#金贾文字
这里有一个提示:当您在编写makefile配方时,发现需要创建一个与未修改的$@
完全不同的目标时,立即停止所做的操作并备份:您走错了方向
public/%.htm: content/%.md:
# Pandoc script
pandoc -i $< -o $@
public/%.htm: content/%.htm
# Jinja Script