- make的使用语法
make [选项][目标][宏定义]
-d 显示调试信息
-f<文件> 指定从哪个文件中读取依赖关系信息,默认文件是Makefile或makefile “-”表示从标准输入
-h 显示所有选项的简要说明
-n 不运行任何Makefile命令,只显示他们
-s 安静的方式运行,不显示任何信息
- makefile的编写原则和规则
规则一:
第一行:目标列表:关联性列表
第二行:命令列表
规则二:
目标列表:关联性列表;命令列表
(反斜杠续行,可使用shell中的通配符,注释(#),连接符(\),)
- Makefile的变量使用
定义:变量名:=[文本]
添加:变量名+=[文本]
变量名:=[文本] [文本]
引用变量:$(变量名)或者$单字符变量
内置变量:
$@ 当前目标名称
$? 比当前目标更新的已修改的依赖性列表
$< 依赖性列表中的第一个文件
$^ 用空格分开所有的依赖性列表
虚目标:
不存在的文件,而且也无需创建他们
允许你强制执行某些事件,而这些事件在正常规则中是不会发生的
虚目标不是真正的文件,make命令可以使用针对它们的任意规则
常见虚目标列表:
all 生成工程中所有可以执行者,通常是Makefile的第一个生成目标
test 运行程序的自动测试套件
clean 删除make all生成的所有文件
install 在系统目录中安装工程项目生成的可执行文件的文档
uninstall 删除make install 安装的所有文件
特殊目标:
.DEFAULTS make找不到makef入口,执行目标相关命令
.IGNORE 忽略某一行,命令不正确停止
.PHONY 允许指定一个不是文件的目标,声明虚目标
.SILENT make执行这些命令但不显示这些命令
.SUFFIXES 为目标指定的前提可以与后缀规则相关联
默认模式规则:
一:默认的模式规则(GNU make)
%.o:%c:
$(CC) $(CFLAGS) -s $<
%.o:%s:
$(CC) $(ASFLAGS) -o $@ $<
二:默认的后缀规则
SUFFIXES:.o.c.s
.c.o:
$(CC) $(CFLAGS) -s $<
.s.o:
$(CC) $(ASFLAGS) -s $<