Makefile 如何在make中创建设置和拆卸例程

Makefile 如何在make中创建设置和拆卸例程,makefile,Makefile,我到处都找过了,但找不到这个功能。这可能是不可能的。我想要一些在食谱执行之前和之后运行的东西。我以为会是这样的: .BEFORE: echo "Hello world" .AFTER: echo "Goodbye cruel world" foo.txt: touch foo.txt 因此输出: Hello World touch foo.txt Goodbye cruel world 这可行吗 targets := foo.txt .PHON

我到处都找过了,但找不到这个功能。这可能是不可能的。我想要一些在食谱执行之前和之后运行的东西。我以为会是这样的:

.BEFORE:
        echo "Hello world"
.AFTER:
        echo "Goodbye cruel world"
foo.txt:
        touch foo.txt
因此输出:

Hello World
touch foo.txt
Goodbye cruel world
这可行吗

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
最终有了自己的先决条件,那么这个问题应该自行解决,当然现在的问题是,每个目标将执行一个前后规则。

这就结束了。如果我只调用默认目标上的make,它就会工作。我的问题中没有包括这一点,但如果我有多个目标,我想分别针对它们,该怎么办?在这种情况下,after目标不会被调用。