Makefile -- 项目编译配置文件,由make程序解释执行
文件名 -- GNUmakefile, makefile, Makefile (GNUmakefile为GNU的make程序解释, 习惯使用Makefile 比较醒目, 但makefile的支持据说更好, 可以用make -f filename或make -file filename指定执行文件)
注释 -- //, #
命令 -- [tab]command (以tab键开头)
引用 -- include filename (可以接多个文件以空格隔开, 也可以用make -I 或make --include-dir指定引用目录)
通配符 -- *, ?, [...]
文件搜寻 -- 当前目录, VPATH变量指定目录 (VPATH多个值用:隔开)
目标 -- 目标 : 依赖 (多个依赖用空格隔开, make默认执行文件中第一个目标, 然后根据依赖关系依次执行)
伪目标 -- 没有相应的文件, 只有手动执行make 伪目标, 否则不会被执行 (可以用.PHONY : 伪目标 指定此时就算有相应的文件也会被当成伪目标)
命令回显 -- 默认make会回显命令本身, 可以用@command阻止本条命令的回显或使用make -s或make -slient阻止全部命令的回显
命令出错 -- 默认命令出错会终止解释执行, 可以使用-command忽略本条错误或使用make -i或make --ignore-errors忽略全部, 如果文件中存在.IGNORE目标该目标中的命令错误会默认忽略, 使用make -k或make --keep-going会中断出错的目标继续执行其他目标
嵌套执行 -- cd subdir && $(MAKE) 或 $(MAKE) -C subdir
变量传递 -- export variable传递该变量 (如果export没有跟变量就会传递所有变量, 不想传递某个变量可以用unexport,无论是否指定变量的传递规则SHELL和MAKEFLAGS都会被传递)
命令包 -- 以define开始,endef结束 (如:
define name
...
endef
可以用$(name)引用)
变量定义 -- name = ...或name := ... (使用$(name)引用,变量中含有其它变量会被展开,追加可以使用name += ...也可以使用进行override name重载,重载中可以使用定义追加等操作)
替换 -- name :a=b (把name中的a结尾都替换成b结尾)
条件判断 -- ifeq, else, endif
函数调用 -- $(function-name arguments)或${function-name arguments} (参数之间用,隔开)
退出码 -- 0-成功, 1-错误, 2-如果使用了make -q参数并使得一些目标不需要更新
字符串替换函数 -- $(subst from, to, text) 返回text中from替换成to的字符串
模式字符串替换函数 -- $(patsubst pattern, replacement, text) 返回text中匹配pattern的替换成replacement的字符串,相当于text:pattern=repacement
去掉开始和结束的空格函数 -- $(strip text)
查找字符函数 -- $(findstring find,in) 在in中找find找到返回find否则返回空字符串
过滤函数 -- $(filter pattern1 pattern2...,text) 返回去除不匹配任意模式后的字符串
反过滤函数 -- $(filter-out pattern1 pattern2, text) 返回去除匹配任意模式后的字符串
排序函数 -- $(sort text) 返回按单词排序后的字符串
取单词函数 -- $(word n, text) 返回text中第n个单词,从1算起
取单词穿函数 -- $(wordlist s, e, text) 返回text中第s到e单词的字符串,从1算起
单词计数函数 -- $(words text)
取首单词函数 -- $(firstword text)
取目录函数 -- $(dir name ...) 返回各name中最后一个/之前的字符串,没有找到/就返回./
取文件函数 -- $(notdir name ...) 返回各name中最后一个/之后的字符串,没有则返回全部
取后缀函数 -- $(suffix name ...) 返回各name中文件后缀字符串
取前缀函数 -- $(basename name ...) 返回各name中去除文件后缀的字符串
加后缀函数 -- $(addsuffix suffix, name ...)
加前缀函数 -- $(addprefix prefix, name ...)
连接函数 -- $(join list1,list2) 返回将list2的每个单词分别拼接到list1中对应位数的单词上字符串
foreach函数 -- $(foreach var, list, text) 每次取出一个单词赋值给var,执行text的计算, 返回所有计算后的单词串
判断函数 -- $(if condition, then-parn, else-parn) else-parn可以省略
call函数 -- $(call expression, param_1,param_2...) 返回用param_i替换expression中的$(i)
origin函数 -- $(origin variable) (返回:
没被定义过 undefined,是默认定义default, 由makefile定义file,命令行定义command line,重载的override,命令行中自动的automatic,)
error函数 -- $(error text) 产生一个错误信息
warning函数 -- $(warning text) 产生一个警告信息