1. 程式人生 > >Makefile檔案解析

Makefile檔案解析

在Makefile中,除第一條命令外,每一條命令的開頭必須是Tab製表符,比如:
CC= arm-linux-gcc
EXEC = hello
OBJS = hello.o
CFLAGS+=
LDFLAGS+=-static

all:$(EXEC)
$(EXEC):$(OBJS)
        $(CC) $(LDFLAGS) -o [email protected] $(OBJS)

clean:
        rm  -f $(EXEC) *.elf *.gdb *.o

次Makefile檔案的幾個主要部分:
CFLAGS 編譯引數
LDFLAGS 連線引數(以上兩個是Makefile變數)
all: 編譯主入口
clean: 清除編譯結果
其中$(CC) $(LDFLAGS) -o [email protected]
$(OBJS)和  rm  -f $(EXEC) *.elf *.gdb *.o是命令,這兩行的開頭是Tab,其他行不能以Tab開頭。

可以這麼認為,Makefile中Tab開始的行代表是命令。

另外,以下是一些GNU make預定義變數:
$*  不包含副檔名的目標檔名稱
$+  所有的依賴檔案,以空格分開,有序,可能包含重複的依賴檔案
$?  所有的依賴檔案,以空格分開,依賴檔案的修改日期比目標的建立日期晚
$^  所有的依賴檔案,以空格分開,不包含重複的依賴檔案
$<  第一個依賴檔案的名稱
[email protected]  目標的完整名稱

若一行過長,可用反斜槓(/)作換行符,這樣就可以作為一行出理了。 一般make使用Makefile作為makefile檔案,若使用其他可使用命令: make -f makefile1