你如何在Make中进行设置和拆卸例程

时间:2016-05-23 22:20:19

标签: makefile

我到处搜索,我找不到这个功能。这可能是不可能的。我希望在执行食谱之前和之后运行一些东西。我预计它看起来像这样:

.BEFORE:
        echo "Hello world"
.AFTER:
        echo "Goodbye cruel world"
foo.txt:
        touch foo.txt

如此输出:

Hello World
touch foo.txt
Goodbye cruel world

这可行吗?

1 个答案:

答案 0 :(得分:1)

targets := foo.txt
.PHONY: after before

after: $(targets)
    @echo "Goodbye cruel world"
$(targets): before
before:
    @echo "Hello world" 

foo.txt:
    touch foo.txt

我之前的建议每次运行foo.txt的配方,因为它取决于.PHONY目标。如果您对此感到满意,那么您也可以使用双冒号规则,这也将解决有关多个目标的问题。

targets := foo.txt

$(targets)::
    @echo "Hello world"

foo.txt::
    touch $@

$(targets)::
    @echo "Goodbye cruel world"

如果foo.txt最终拥有自己的先决条件,那么此问题应该自行解决,当然现在的问题是前后规则将针对每个目标执行一次。