MAKEFILE編寫學習--1

makefile是在編譯中大型程序中使用的自動化編譯工具make依賴的指令文件。這樣可以使得程序的編譯更加便捷快速。
makefile的一般規則如下:

target ... : prerequisites ...
command

target即是一個目標文件,它可以是可執行程序、目標中間文件、標記(label)等。這個目標要想編譯出來需要的前提條件就是prerequisites這些已存在的文件。編譯過程中的規則則是由command裏面的各個命令組成。command以一個Tab起頭。make會比較目標文件與條件中的文件更新時間,一旦有文件被修改,make就會依賴於這些前提文件進行重新編譯。makefile中第一個target會被認爲是make的默認目標。
prerequisites是空的時候,前面的目標文件被當成一個命令,使用make執行時會直接執行command裏的命令。

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

執行這個make clean會將當前文件夾下的幾個中間文件刪除掉。
makefile中可以使用變量,類似於C語言中的宏:

edit : main.o kda.o command.o
	gcc -o edit main.o kda.o command.o

這裏面如果要向edit的依賴項中添加文件,那麼也得向command中加入同樣的文件,makefile一大,就很難批量處理,這時候可以聲明變量:

objects = main.o kda.o command.o

那麼上面的makefile可以改成:

objects = main.o kda.o command.o

edit : $(objects)
	gcc -o edit $(objects)

通過美元符號$(變量名)的方式來引用變量。
make工具會.o文件對應的.c文件自動的添加到依賴關係中。如果找到一個foo.o,那麼對應的foo.c就會自動的加入到依賴關係並且會在command中自動隱式添加一行gcc -o。那麼foo,o的生成就可以簡寫爲:

foo.o : other_files_list

其中的command直接就不用寫了。
.PHONY用來修飾target,表示它是一個“僞目標”。
總結:

  • 顯式規則
  • 隱式規則
  • 變量定義
  • 引用文件
  • 註釋
    makefile中只有行註釋,註釋以#開頭。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章