Makefile中的make命令使用 二

2021-09-29 07:21:02 字數 1386 閱讀 4839

1.makefile中使用變數

//可以看到[.o]檔案的字串被重複了兩次, 

edit : main.o kbd.o command.o display.o insert.o search.o files.o utils.o

gcc -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o

//使用變數

//在makefile 中以「$(objects)」的方式來使用變數

變數了,於是我們的改良版 makefile 就變成下面這個樣子:

objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o

edit : $(objects)

gcc -o edit $(objects)

2.make的隱晦規則(即自動推導)

什麼就隱晦規則?

即只要 make 看到乙個[.o]檔案,它就會自動的把[.c]檔案加在依賴關係中,

如果 make找到乙個 whatever.o,那麼 whatever.c,就會是 whatever.o 的依賴檔案。

並且 gcc -c whatever.c 也會被推導出來,也就是不用自己寫了的意思。

舉例子:

//沒有採用隱晦規則

main.o : main.c defs.h

gcc -c main.c

//使用隱晦規則就可以改為

main.o :defs.h

3.偽目標檔案

.phony : clean

clean :

rm edit *

.elf *

.o *

.dis

4.清空目標檔案的規則:每個 makefile 中都應該寫乙個清空目標檔案(.o 和執行檔案)的規則

//一般的風格都是:

clean:

rm edit $(objects)

//更為穩健的做法是:

.phony : clean

clean :

-rm edit $(objects)

前面說過,.phony 意思表示 clean 是乙個「偽目標」,。而在 rm 命令前面加了乙個小減號的意思就是,也許某些檔案出現問題,但不要管,繼續做後面的事。當然,clean 的規 則不要放在檔案的開頭,不然,這就會變成 make的預設目標,相信誰也不願意這樣。不成 文的規矩是——「clean 從來都是放在檔案的最後」。

make 與makefile的作用

在開發乙個系統時,一般是將乙個系統分成幾個模組,這樣做提高了系統的可維護性,但由於各個模組間不可避免存在關聯,所以當乙個模組改動後,其他模組也許會有所更新,當然對小系統來說,手工編譯連線是沒問題,但是如果是乙個大系統,存在很多個模組,那麼手工編譯的方法就不適用了。為此,在linux系統中,專門提供了...

make 和 makefile 的關係

要先總結make和makefile,就需要先了解下面這個過程 預編譯 也叫預處理,進行一些文字替換工作,比如將 define定義的內容,在 中進行替換 編譯 將預處理得到的 進行詞法分析 語法分析 中間 如果是在windows下,中間 就是.obj檔案 在linux系統下,中間 就是.o檔案 彙編 ...

(一)make之make和makefile初識

1.1 make 和makefile 1.1.1 make make 是乙個應用程式 1.1.2 makefile makefile是乙個描述檔案 1.1.3 makefile本質 makefile實際就是乙個指令碼程式,類似於shell指令碼。由於 塊中沒有make的,所以用bash來代替make...