2016-01-03 50 views
1

我正在通過Learn C The Hard Way工作,在Ex2 Extra Credit中,他們要求您創建一個all: ex1目標,該目標將使用命令make生成ex1。我無法理解所有:Makefile中的ex1? (學習C艱難的方法)

這是我所創建的代碼:

CFLAGS=-Wall -g 

all: ex1 

clean: 
     rm -f ex1 

它的工作原理。
當我從命令行運行make時,它爲make的ex1文件。當我運行make clean時,它將刪除文件。

我不明白的是爲什麼:

all: ex1 

是不是:

all: 
    make ex1 

它在哪裏,從獲得make命令?我猜,命令行,但爲什麼會乾淨運行rm -f ex1而不是make rm -f ex1並失敗。這對我來說似乎不一致。有人可以解釋發生了什麼事嗎?

+1

聽說過make中的隱含規則? –

+1

閱讀[GNU make](https://www.gnu.org/software/make/)的文檔;它有一個很好的教程部分 –

+0

謝謝!現在閱讀GNU。 –

回答

3

名稱all不固定,它只是一個常規名稱。 all: target表示如果您調用它,make將構建完成構建所需的全部內容。
所以實際上,你可能寫了make ex1,但如果你說,有100個文件(ex1,ex2,ex3 ...),你不會想輸入100行,對吧?

all通常也是.PHONY的目標。

+1

謝謝。它開始有意義。將更多地閱讀它。感謝.PHONY鏈接。 –