Makefile 一步入門

CodeMoggy發表於2020-12-19
Makefile 一步入門

前言

Makefile 是一個自動化編譯連結指令碼,通過編寫 Makefile 來自定義專案編譯連結的規則,核心的作用就是實現自動化編譯的效果,只要一個 make 命令,就可以實現整個程式的自動化編譯,極大地提高了軟體開發的效率。 很多大型專案的編譯都是通過 Makefile 來組織的, 如果沒有 Makefile, 那很多專案中各種庫和程式碼之間的依賴關係不知會多複雜.,而且Makefile在絕大多數的IDE 開發環境中都在使用,已經成為一種工程的編譯方法。

怎麼寫

Makefile 指令碼的格式是:

目標檔案:依賴檔案
	生成目標的方法

就像這樣:

# 有3個原始檔 Main.c swap.c 標頭檔案1 標頭檔案2 

A.out:main.o swap.o 
	gcc -o main.o swap.o 
	
Main.o:main.c 標頭檔案1 
	Gcc -c main.c 
	
Swap.o:swap.c 標頭檔案2 
	Gcc -c swap.c 
	
Clean: Rm main.o swao.o

在當前目錄命令列直接輸入 make,程式立馬自動化編譯,makefile自動化的原理就是:如果目的檔案不存在,或是目的檔案所依賴的後面的 .o 檔案的檔案修改時間要比這個檔案新,那麼,他就會執行後面所定義的命令來生成所需要的目標檔案

makefile的語法糖:
改進1:
如果新增了兩個原始檔,那麼就需要在三個地方新增,依賴行,命令列,clean行 我們可以用一個類似別名的方式去替換,新的寫法如下:

Makefile 一步入門

改進2:
使用萬用字元萬用字元: $^所有的依賴檔案 $@所有的目標檔案 所以上面的可以替換成

 %.o:%.c 
 	$(CC) -c $^ -o $@

相關文章