makefile(七):makefile的命令行参数

本节已经是makefile的最后一小节了,本节介绍makefile的常见的调试和运行参数

-n
--just-print
--dry-run
--recon

make不执行命令,只打印出需要重建目标使用的命令

-t
--touch

更新所有目标文件的时间戳( 对于过时的目标文件不进行内容更新, 只更新时间戳)。

-q
--question

不执行任何命令并且不打印任何输出信息, 只检查所指定的目标是否已经是最新的。如果是则返回 0, 否则返回 1。

-W FILE
--what-if= FILE
--assume-new= FILE
--new-file= FILE 

假定指定的文件为最新。
配合-n参数,可以查看,哪些目标依赖这个文件,并且将运行哪些命令
配合-t参数,可以更新,依赖这个文件的目标文件,都进行更新
这几个参数的配合非常有用,在后面的文章中,将会对google 的Android原生系统的编译进行分析,可以使用者几个参数的配合,进行分析。

-B
--always-make

强制重建所有规则的目标, 不根据规则的依赖描述决定是否重建目标文件。

-C DIR
--directory=DIR

在运行make指令之前,切换工作目录为DIR

--debug=[options]

指定输出的信息的等级
options为一下的值,a(all),b(basic),v(verbose),i(implic),j(jobs),m(makefiile).分别表示如下的意义:

a:输出所有的类型的调试信息
b:输出基本调试信息。 包括: 那些目标过期、 是否重建成功过期目标文件。
v:“ basic” 级别之上的输出信息。 包括: 解析的 makefile 文件名, 不需要重建文件等。 此选项目默认打开“ basic” 级别的调试信息。
i:输出所有使用到的隐含规则描述。 此选项目默认打开“ basic” 级别的调试信息
j:输出所有执行命令的子进程, 包括命令执行的 PID 等。
m:也就是 makefile, 输出 make 读取 makefile, 更新 makefile, 执行 makefile的信息。

注意:上面的所有文字,大部分直接拷贝于《gnu make中文手册》作者:徐海兵

-e
--environment-overrides

使用系统环境变量的定义覆盖Makefile中的同名变量定义

-f=FILE
--file= FILE
--makefile= FILE

指定“ FILE”为make执行的makefile文件。

-i
--ignore-errors

执行过程中忽略规则命令执行的错误。

-I DIR
--include-dir=DIR

指定被包含makefile文件的搜索目录。在Makefile中出现“ include”另外一个文件时,将在“ DIR”目录下搜索,多个“ -I”指定目录时,搜索目录按照指定顺序进行。

-j [JOBS]
--jobs[=JOBS]

指定可同时执行的命令数目。在没有指定“ -j”参数的情况下,默认为1,存在多个“ -j”参数时,尽最后一个“ -j”指定的数目(“ JOBS”)有效。

-k
--keep-going

执行命令错误时不终止make的执行, make尽最大可能的执行所有的命令,直到出现致命错误才终止。

-l LOAD
--load-average[=LOAD]
— max-load[=LOAD]

告诉make当存在其它任务在执行时,如果系统负荷超过“ LOAD”,不再启动新任务。没有指定“ LOAD”的“ -I”选项将取消之前“ -I”指定的限制

-o FILE
--old-file= FILE
--assume-old= FILE

指定文件“FILE”不需要重建,即使相对于它的依赖已经过期;同时也不重建依赖于此 文件任何文件(目标文件)。注意:此参数不会通过变量“MAKEFLAGS”传递给子make进程。

-r
--no-builtin-rules

取消所有内嵌的隐含规则,不过你可以在Makefile中使用模式规则来定义规则。
同时选项“ -r”会取消所有支持后追规则的隐含后缀列表,同样我们也可以在Makefile中使用“ .SUFFIXES”定义我们自己的后缀规则。“ -r”选项不会取消make内嵌的隐含变量。

-R
--no-builtin-variabes

取消 make 内嵌的隐含变量。注意,“ -R”选项同时打开“ -r”选项。因为没有了隐含变量,隐含规则将失去意义(隐含规则是以内嵌的隐含变量为基础的)。

--warn-undefined-variables

在发现Makefile中存在对没有定义的变量进行引用时给出告警信息。此功能可以帮助我们调试一个存在多级套嵌变量引用的复杂Makefile。但是:我们建议在书写Makefile时尽量避免超过三级以上的变量套嵌引用。

本打算每月写一遍笔记,奈何到了7月诸事缠身,不得已现在才补上。
下一个要学习的内容:git的版本管理

你可能感兴趣的:(linux程序设计)