自动工具扩展.PHONY



我想将目标添加到.PHONY目标列表中。但是,当我在Makefile.am中重新定义.PHONY时,它会覆盖自动生成的Makefile中的前一个。我只是想延长它。

有没有一种优雅的方法可以做到这一点?

只需执行即可。.PHONY是一个目标(而不是一个变量),因此您不会覆盖,而是添加到其中:

考虑一下简单的Makefile:

default: foo bar baz
   @touch $^
.PHONY: foo
foo:
   @echo "foo"
.PHONY: bar
bar:
   @echo "bar"
baz:
   @echo "baz"

正如您所看到的,有两个独立的.PHONY定义。

在第一次运行时,它将打印出"foo"、"bar"one_answers"baz",然后触摸(创建)3个类似名称的文件。在第二次运行时,它将只打印"foo"one_answers"bar",因为它们是PHONY,所以即使文件存在,目标也会运行。

现在考虑Makefile.am`:

bin_PROGRAMS = foonly
foonly_SOURCES = main.c
## an additional phony target:
.PHONY: test
test:
    echo "test"

检查得到的Makefile,您将再次看到多个.PHONY目标。它们的行为与第一个示例类似:相加,而不是相互覆盖。

最新更新