2012-01-04 50 views
1

我不明白爲什麼make給我這個。我運行「make clean; make」然後「make install」,然後我得到一個「make:安裝」沒有任何事情要做。「信息。這是我的目標安裝:惱人的「沒有什麼可以'安裝'」的訊息

$(phony install): $(OBJFILES) 
    @$(shell cp $(OBJFILES) ../../) 

我改變它使用「.PHONY:安裝」到‘$(假安裝)’因爲我看到網上有人誰說,也是一個方式做僞目標,我被困住了。說實話,我自己編寫自己的Makefiles還不是很新,但看起來很簡單。我確信我錯過了一些明顯的東西,我會在一秒之內感到茫然。 :P

好的,奇怪的事情。看起來,make正在執行安裝目標,但仍然在說「沒有做任何事」,這很奇怪。另外,如果我「做清潔,做安裝」它安裝得很好,並沒有給我任何消息。所以,只有在需要重建對象文件時,「安裝」纔會看到它需要運行。這沒有意義。我應該可以運行「make; make install」!

回答

1

您不需要在配方中使用$(shell ...),而是直接寫入命令。此外,我從來沒有聽說過$(phony ...),我想這是無效的(嘗試使用--warn-undefined-variables選項運行Make)。

.PHONY: install 
install: $(OBJFILES) 
    @cp $^ ../../ 
+0

它是$(shell cp ...)。我認爲在執行這樣的命令時你必須使用$(shell)。謝謝! $(假安裝)似乎工作。確認「安裝」的目標,並從未抱怨沒有得到輸出文件「安裝」,但我想「.PHONY:安裝」是這樣做的標準方式。也許$(假目標名稱)是一種古老的方式,並支持向後兼容?我不知道。大聲笑 – Caleb1994 2012-01-04 16:53:24

+0

http://makepp.sourceforge.net/1.19/makepp_tutorial.html#Phony%20targets 這就是我找到僞目標的語法。我只是意識到,這個教程來自makepp,而不是GNU make,但是GNU make仍然接受它。 – Caleb1994 2012-01-04 16:58:07

+0

@ Caleb1994是的,我認爲是GNU Make,而不是makepp。 – 2012-01-04 17:25:05