摘要:
在Linux系统开发项目工程时,我们经常需要使用到Makefile来组织管理程序。对Makefile的掌握是Linux开发必不可少的环节,但是我们没有必要花大量的时间,掌握所有Makefile的规则以及语法等。下面介绍我们经常需要用到的一些规则和语法,并附上官方Makefile的使用手册,当面临新的规则和语法的问题的时候,可以查阅这些手册。
基本使用:
Makefile:组织管理程序
规则: ######################################################################### 目标文件:依赖文件 【TAB】命令
如果依赖文件比目标文件新,或者目标文件不存在,那么执行命令。 #########################################################################
语法: ######################################################################### 1. 通配符: % $@ 表示目标文件 $< 表示第一个依赖文件 $^ 表示所有依赖文件
2. 假想目标: .PHONY: 防止目标文件不存在,而不执行目标命令
3. 即时变量和延时变量 A := xxx #A的值即刻确定,在定义的时即确定 B = xxx #B的值,使用的时候才能确定
:= #即时变量 = #延时变量 ?= #延时变量,如果是第一次定义才起效,如果在前面该变量已经定义,则忽略 += #附加,它是即时变量还是延时变量,取决于前面的定义 #########################################################################
Makefile函数: ######################################################################### $(foreach var,list,text) $(filter pattern...,text) #在text中取出符合pattern格式的值 $(filter-out pattern...,text) #在text中取出不符合pattern格式的值 $(wildcard pattern) #pattern定义了文件名的格式 #wildcard取出其中存在的文件 $(patsubst pattern,replacement,$(var)) #从列表中取出每一个值 #如果符合pattern #则替换为replacement #########################################################################
手册链接:
http://www.gnu.org/software/make/manual/ (官方英文版本)
http://www.gnu.org/software/make/manual/make.pdf(英文手册下载链接)
中文翻译版本下载链接:https://download.csdn.net/download/windsnow1/11342827
