make命令参数
make是一个Linux下的二进制程序,用来处理Makefile这种文本文件。在Linux的Shell命令行键入make的时候,将自动寻找名称为"Makefile"的文件作为编译文件,如果没有名称为"Makefile"的文件,将继续查找名称为"makefile"的文件。找到编译文件后,make工具将根据Makefile中的第一个目标自动寻找依赖关系,找出这个目标所需要的其他目标。如果所需要的目标也需要依赖其他的目标,make工具将一层层寻找直到找到最后一个目标为止。
make工具的使用格式为:
make [options] [target] ... |
options为make工具的选项,target为Makefile中指定的目标。表5-1给出了make工具的参数选项。
表5-1 make工具的参数选项
选 项 | 含 义 |
-f filename | 显式地指定文件作为Makefile |
-C dirname | 制定make在开始运行后的工作目录为dirname |
-e | 不允许在Makefile中替换环境变量的赋值 |
-k | 执行命令出错时,放弃当前目标,继续维护其他目标 |
-n | 按实际运行时的执行顺序模拟执行命令 (包括用@开头的命令),没有实际执行 效果,仅仅用于显示执行过程 |
-p | 显示Makefile中所有的变量和内部规则 |
-r | 忽略内部规则 |
-s | 执行但不显示命令,常用来检查Makefile的正确性 |
-S | 如果执行命令出错就退出 |
-t | 修改每个目标文件的创建日期 |
-I | 忽略运行make 中执行命令的错误 |
-V | 显示make的版本号 |
在Makefile中,经常使用的变量如表5-2所示。
表5-2 Makefile中常用变量
变量 | 描 述 |
$@ | 目标文件名 |
$< | 规则中的第一个文件名 |
$^ | 规则中所有相关文件的名称 |
$? | 规则中日期比目标新的文件列表,用空格分开 |
$@(D) | 目标文件的目录部分 |
$@(F) | 目标文件的文件名部分 |
在Makefile中,目标名称的指定常常有以下惯例:
all:表示编译所有的内容,是执行make时默认的目标。
clean:表示清除目标。
distclean:表示清除所有的内容。
install:表示进行安装的内容。