迴圈條件
其他makefile基本語法
呼叫子makefile
類似函式
關鍵字有:ifeq,ifneq,ifdef,ifndef
ifeq ($(cc),gcc)
$(cc) -o *** ***
else
$(cc) -o xx xx
endif
函式
含義$(subst ,
)字串替換函式
$(patsubst ,,
)模式字串替換函式
$(strip )
去空格函式
$(findstring ,)
查詢字串函式
$(filter ,
)過濾函式
$(filter-out ,
)反過濾函式
$(sort )
排序函式
$(word ,
)取單詞函式
$(wordlist ,,
)取單詞串函式
$(words
)單詞個數統計函式
$(firstword
)首單詞函式
例:
sources := main.c foo.c bar.s other.c include.h
foo: $(sources)
cc $(filter %.c %.s,$(sources)) -o foo
$(filter %.c %.s,$(sources))
返回的值是:main.c foo.c bar.s other.c
函式含義
$(dir )
取目錄函式
$(notdir )
取檔案函式
$(suffix )
取字尾函式
$(basename )
取字首函式
$(addsuffix ,)
加字尾函式
$(addprefix ,)
加字首函式
$(join ,)
連線函式
例:$(basename src/main.c src/other.c hacks)
返回值是:src/main src/other hacks
$(foreach ,,
)
names := a b c d
files := $(foreach n,$(names),$(n).o)
$(files)
的值是 :a.o b.o c.o d.o
$(if ,)
$(if ,,)
val := a
objects := $(if $(val),$(val).o,nothing)
call函式是唯一乙個可以用來建立新的引數化的函式
$(call ,,,…,)
rever = $(1)$(2)
foo = $(call rever,a,b)
$(shell 執行shell命令並將返回結果作為返回值
contents := $(shell cat foo)
files := $(shell echo *.c)
makefile語法 Makefile的語法
假如乙個目標檔案所依賴的依賴檔案很多,我們豈不是要寫很多規則?這顯然不合乎常理。我們可以使用萬用字元解決這些問題。我們對上節程式進行修改 如下 test a.o b.o gcc o test o c gcc c o o 表示所用的.o檔案 c 表示所有的.c檔案 表示目標 表示所有依賴檔案 在該目錄...
makefile語法示例
edit main.o kbd.o cc o edit main.o kdb.o main.o main.c defs.h cc c main.c kbd.o kbd.c defs.h command.h cc c kbd.c clean rm o edit makefile中使用變數 object...
Makefile編寫語法
makefile樣例 all main.c foo1.c foo2.c foo3.c gcc main.c foo1.c foo2.c foo3.c o all targets prerequisites command 或者targets prerequisites command targets...