1. 程式人生 > >Makefile入門教程

Makefile入門教程

文件中 函數 hello 最小 req 最小值 targe 簡單 分享圖片

Makefile介紹

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

Makefile格式

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

最簡單的Makefile

以Hello World為例:

(1) 先編寫好源文件(.c文件),然後在同一目錄下新建名為Makefile(之前首字母必須大寫,現在大小寫都行)的文本文件。

技術分享圖片

(2) 編寫Mikefile

技術分享圖片

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

技術分享圖片

變量的定義及使用

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

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

使用變量替換後的情況:

技術分享圖片

同時編譯多個可執行文件

例如: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。

Makefile入門教程