make的用法

make 規則:

當依賴比目標"新"時執行命令.
target: prerequisite
<TAB>command

1. 多目標:
file1.o file2.o : source1.c source2.c source3.c
<TAB>command

2. 僞目標:
.PHONY: help
help:
<TAB>command

3. 模式規則:
%: make中使用的通配符號, 表明柄(stem).
例如, 想使用add.c sub.c生成add.o和sub.o, 便可使用此規則
%.o : %.c
<TAB>command

4. 限制的模式規則:
和模式規則同樣, 可是目標只有a.o和b.o
a.o b.o : %.o : %.c
<TAB>command
變量定義:
--------------------------------
延後賦值: 變量被引用時才求值
var = str

當即賦值
var := str

追加賦值: 給變量追加值, 若是變量原來是當即賦值的,
則追加也是當即的; 不然爲延後追加賦值.
var += str

條件賦值: 變量沒有定義則使用該賦值.
var ?= str


變量引用:
--------------------------------
使用$(var)形式或者${var}形式引用變量. makefile中通常
只使用$(var)形式.
注意: shell腳本只使用${var}形式引用變量, shell腳本中
$(command)表示命令替換, 即執行command命令並可將命令輸出
賦值給某shell變量.
makefile是make解析的, 和shell腳本是兩回事.


一個 := 與 = 區別的例子:
--------------------------------
CC := gcc
CFLAGS := -g
CCOMP = $(CC) $(CFLAGS)
$(info Compiler is $(CCOMP))

CC := arm-linux-gcc
$(info Compiler is $(CCOMP))


內置變量:
--------------------------------
$@ 規則目標
$< 規則依賴中第一個預備文件
$^ 規則依賴中全部預備文件的完整清單

$(@D) 規則目標文件的所在目錄
$(@F) 規則目標文件的文件名


變量高級用法:
--------------------------------
foo := a.o b.o c.o
var := $(foo:.o=.c)

替換後變量var的值是 a.c b.c c.clinux

相關文章
相關標籤/搜索