Makefile入門教程

Makefile介紹shell

make是一個命令工具,它解釋Makefile 中的指令(應該說是規則)。在Makefile文件中描述了整個工程全部文件的編譯順序、編譯規則。Makefile 有本身的書寫格式、關鍵字、函數。像C 語言有本身的格式、關鍵字和函數同樣。並且在Makefile 中能夠使用系統shell所提供的任何命令來完成想要的工做。數組

Makefile格式函數

1 target: prerequisites 2  commands 3 
4 
5 目標文件: 依賴項 6         命令

最簡單的Makefile工具

以Hello World爲例:ui

(1) 先編寫好源文件(.c文件),而後在同一目錄下新建名爲Makefile(以前首字母必須大寫,如今大小寫都行)的文本文件。spa

(2) 編寫Mikefile3d

 

 (3)打開終端,運行make命令,便可生成可執行文件hello,運行hello,即輸出Hello World.code

變量的定義及使用blog

1 CC = gcc #定義變量並賦值 2 CFLAGS = -lm -Wall -g 3 
4 hello: hello.c 5     $(CC)  $(CFLAGS)  hello.c - o  hello    #引用前面定義的變量,$(變量名),這種形式

實際效果沒變,只是便於修改某些參數get

使用變量替換後的狀況:

同時編譯多個可執行文件

例如:bar.c包含求數組中最大值函數,foo.c包含求數組中最小值函數,各自對應的頭文件是bar.h、foo.h,main_max調用求最大值函數來打印最大值,main_min調用求最小值函數打印最小值。

Makefile可以下編寫:

 1 CC = gcc
 2 CFLAGS = -O -Wall -m64 -std=gnu89  3 LIBS = -lm  4 
 5 all: main_max main_min #必須寫成all這樣的形式,不然只會生成前一個可執行文件main_max  6 
 7 main_max: main_max.c bar.o foo.o  8     $(CC) main_max.c bar.o foo.o -o main_max  9 
10 main_min: main_min.c bar.o foo.o 11     $(CC) main_min.c bar.o foo.o -o main_min 12 
13 foo.o: foo.c 14     $(CC) -c foo.c 15 
16 bar.o: bar.c 17     $(CC) -c bar.c 18 
19 .PHONY: clean
20 clean:
21 rm *.o main_max main_min

clean

因爲源代碼發佈一般不會有可執行文件和.o文件,使用 rm  *.o  xx(可執行文件名) ,再輸入make clean命令就能夠自動清除。

 爲了不與名爲clean的文件衝突,最好在clean前面加.PHONY。

相關文章
相關標籤/搜索