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。