2013-07-15 58 views
0

我想將目標添加到.PHONY目標列表。 但是,當我重新定義.PHONY時,它在Makefile.am中覆蓋了自動生成的Makefile中的前一個。我只想擴展它。自動工具擴展.PHONY

有沒有一個優雅的方式來做到這一點?

回答

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目標。他們會像第一個例子那樣表現:加起來,而不是相互壓倒。