autotools扩展.PHONY

时间:2013-07-15 10:53:54

标签: autotools automake

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

有优雅的方法吗?

1 个答案:

答案 0 :(得分:3)

干脆做。 .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目标。它们的行为与第一个例子类似:加起来,而不是相互覆盖。