【问题标题】:Makefile don't find ruleMakefile 找不到规则
【发布时间】:2020-04-13 20:39:59
【问题描述】:

我在一个Jekyll 项目中,下面是makefile

project = jekyll-template-repository

e:          execute
execute:
            bundle
            build


r:          run
run:
            jekyll serve -l -o -b /$(project)


b:          build
build:      clean
            jekyll build

c:          clean
clean:
            jekyll clean

当我运行make execute 时,它会抛出错误make: build: Command not found

我想它正在尝试将它作为一个常见的 bash 命令执行,但是我想调用我在文件中转发的 build 规则。当其他make 规则不在另一个规则: 之后时,是否需要一些特殊语法来指向它们?

【问题讨论】:

    标签: makefile build jekyll gnu-make


    【解决方案1】:

    您不能在生成文件中“调用”规则。规则不是函数。您可以依赖一个目标,在这种情况下,该目标将在此目标被视为最新之前更新。

    每个规则的配方实际上都是一个 shell 脚本。它从来都不是其他目标的列表。

    你可以写:

    execute: build
    

    然后它将首先执行build 目标的配方(假设它不是最​​新的),然后它将执行execute 目标的配方。

    【讨论】:

    • 完美,我明白了。我正在稳定目标优先级,因此我无法从另一个目标执行的中间调用它们!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    相关资源
    最近更新 更多