如何在Make中创建安装和拆卸例程

4

我已经到处搜索了,但是没有找到这个功能。可能根本不可能实现。我想要在执行菜谱之前和之后运行某些东西。我认为它看起来应该像这样:

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

输出结果如下:

Hello World
touch foo.txt
Goodbye cruel world

这能行吗?

1个回答

4
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目标将不会被调用。 - marshallm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接