本文共 2387 字,大约阅读时间需要 7 分钟。
Makefile ?????????????????????? := ?????????? = ??????????????????????????????????
???
A := $(C)B = $(C)C = abc
??? all ?????A ? B ???? abc ???
$^?????$^ ?????????????????????Makefile ?????????????
$@?????$@ ?????????????????.o????????????
$<????????$< ?????????????????
$????????$? ?????????????????
%????% ?Makefile ??????????????????%.o ????.o???
test : a.o b.o gcc -o test $^%.o : %.c gcc -c -o $@ $<
???????$^ ????? a.o ? b.o?????????????
Makefile ???????????????????????????
$(subst form,to,text)?? text ????? form ? to????
$(subst ee,EE,feet on the street)
????fEET on the strEET
$(patsubst pattern,replacement,text)??? text ??? pattern ?????????
$(patsubst %.c,%.o,a.c.c bar.c)
????a.c.o bar.o
$(dir names...)???????????????
$(dir src/foo.c hacks)
????src/ ./
$(notdir names...)????????????????
$(notdir src/foo.c hacks)
????foo.c hacks
$(suffix names...)???????????????
$(suffix src/foo.c src-1.0/bar.c hacks)
????.c .c
$(basename names...)?????????????
$(basename src/foo.c src-1.0/bar.c hacks)
????src/foo src-1.0/bar hacks
$(addsuffix suffix,names...)???????????
$(addsuffix .c,foo bar)
????foo.c bar.c
$(addprefix prefix,names...)???????????
$(addprefix src/,foo bar)
????src/foo src/bar
$(join list1,list2)??????????????
$(join aaa bbb, 111 222 333)
????aaa111 bbb222 333
$(foreach var,list,text)??????????????? text????
dirs := a b c dfiles := $(foreach dir,$(dirs),$(wildcard $(dir)/*))
???? files ??????????
?????? $(if ...), $(value ...), $(eval ...), $(call ...), $(origin ...), $(shell ...), ??
???? make ????????????????????????? .PHONY ???
???
.PHONY: cleanclean: rm -f *.o test
?? clean ?????make clean ????????? .PHONY ?????????
? Makefile ?????? @ ??????????
???
@echo ???? XXX ??......
??????
???? XXX ??......
???? make -n ? --just-print?Makefile ????????????
A := $(C)B = $(C)?=???????????????????+?????????????????????A := $(C)B = $(C)C = abc
?? all?
all: @echo A = $(A) @echo B = $(B) @echo C = $(C)
?????
A = abcB = abcC = abc
??????
C ?= 123
?????
A = abcB = abcC = 123
Makefile ????????????????????????
VPATH?????????SHELL??? shell ??????MAKEFLAGS??? make ??????MAKELEVEL??? make ?????CURDIR???????转载地址:http://zgvjz.baihongyu.com/