我想将目标添加到.PHONY
目标列表中。
但是,当我在.PHONY
中重新定义Makefile.am
时,它会覆盖自动生成的Makefile
中的前一个{{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
目标。它们的行为与第一个例子类似:加起来,而不是相互覆盖。