Makefile 生成具有多个潜在依赖项的文件

Makefile 生成具有多个潜在依赖项的文件,makefile,Makefile,我正在尝试为静态页面生成器创建一个make文件,到目前为止,我正在使用jinja和pandoc,其想法是拥有这样的文件结构 . |-content |-public |-templates |-Makefile 我遇到的问题(至少我认为是这样)是,根据我的说法,语法是 # For a final result target: dependency commands # A rule for dependency dependency: commands 我的依赖项在内容目

我正在尝试为静态页面生成器创建一个make文件,到目前为止,我正在使用
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