0

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

有没有一种优雅的方式来做到这一点?

4

1 回答 1

4

简单地去做。 .PHONY是一个目标(而不是一个变量),因此你不会覆盖,但你添加到它:

考虑简单的 Makefile:

default: foo bar baz
   @touch $^

.PHONY: foo
foo:
   @echo "foo"
.PHONY: bar
bar:
   @echo "bar"

baz:
   @echo "baz"

如您所见,有两个独立的.PHONY 定义。

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

现在考虑 Makefile.am`:

bin_PROGRAMS = foonly
foonly_SOURCES = main.c

## an additional phony target:
.PHONY: test
test:
    echo "test"

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

于 2013-07-16T07:52:03.407 回答