make4.2工具使用技巧

make是计算机上的可执行指令。此指令用于读取makefile文件,然后执行这个文件中的指令。
make常指GNU Make,GNU Make是一个用来控制可执行文件和其他一些从源文件来的非源代码文件版本的软件。

参照最新的GNU make 4.2版的参数定义。常用可选参数总结如下:

‘-b’
‘-m’
与其他版本的make兼容时,将忽略这些选项。

‘-B’
‘--always-make’
考虑所有目标已过时。 GNU make继续使用常规算法来考虑目标及其先决条件; 但是,无论其先决条件的状态如何,所有考虑的目标总是被重新制作。 为了避免无限递归,如果MAKE_RESTARTS设置为大于0的数字,则在考虑是否重新制作makefile时禁用此选项。

“-C dir”
“--directory=dir”
在读取makefile之前更改目录dir。 如果指定了多个“-C”选项,则每个选项都相对于前一个选项进行解释:“ -  C / -C等”等同于“-C / etc”。 这通常与make的递归调用一起使用。

“-d”
除正常处理外,还打印调试信息。 可以选择各种级别和类型的输出。 没有参数,打印“基本”级别的调试。 可能的论点如下; 只考虑第一个字符,值必须以逗号或空格分隔。

“--debug[=options]”
打印debug信息。它有几种不同的级别可供选择,默认basic。
a(all) 启用所有类型的调试输出。 这相当于使用'-d'。
b(basic) 基本调试打印发现过时的每个目标,以及构建是否成功。
v(verbose) 高于'基本'的水平; 包括有关解析哪些makefile的消息,不需要重建的先决条件等。此选项还启用“基本”消息。
i(implicit) 打印描述每个目标的隐式规则搜索的消息。 此选项还可以启用“基本”消息。
j(jobs) 打印消息,提供有关特定子命令调用的详细信息。
m(makefile) 默认情况下,尝试重新生成makefile时未启用上述消息。 此选项也可在重建makefile时启用消息。 请注意,'all'选项确实启用了此选项。 此选项还可以启用“基本”消息。
n(none) 禁用当前启用的所有调试。 如果在此之后遇到其他调试标志,它们仍将生效。


‘-e’
‘--environment-overrides’
将来自环境的变量优先于makefile中的变量。

‘--eval=string’
将字符串评估为makefile语法。 这是eval函数的命令行版本。 在定义了默认规则和变量之后,但在读取任何makefile之前执行评估。

‘-f file’
‘--file=file’
‘--makefile=file’
将名为file的文件作为makefile读取。

‘-h’
‘--help’
提醒您理解然后退出的选项。

‘-i’
‘--ignore-errors’
忽略为重制文件而执行的配方中的所有错误。

‘-I dir’
‘--include-dir=dir’
指定目录dir以搜索包含的makefile。 如果使用多个'-I'选项指定多个目录,则按指定的顺序搜索目录。

‘-j [jobs]’
‘--jobs[=jobs]’
指定要同时运行的配方(作业)数。 没有参数,make尽可能多地同时运行配方。 如果有多个'-j'选项,则最后一个选项有效。 有关如何运行食谱的更多信息。 请注意在MS-DOS上忽略此选项。

‘-k’
‘--keep-going’
发生错误后尽可能继续。 虽然失败的目标和依赖它的目标无法重新制作,但这些目标的其他先决条件可以完全相同。

‘-l [load]’
‘--load-average[=load]’
‘--max-load[=load]’
指定如果其他配方正在运行且负载平均值至少为load(浮点数),则不应启动新配方。 如果没有参数,则删除先前的加载限制。

‘-L’
‘--check-symlink-times’
在支持符号链接的系统上,除了这些链接引用的文件上的时间戳之外,此选项还会使make考虑任何符号链接上的时间戳。 提供此选项时,文件和符号链接中的最新时间戳将被视为此目标文件的修改时间。

‘-n’
‘--just-print’
‘--dry-run’
‘--recon’
打印将要执行的配方,但不执行它。

‘-o file’
‘--old-file=file’
‘--assume-old=file’
即使文件文件早于其先决条件,也不要重新生成文件,并且不会因文件更改而重新编译任何文件。 本质上,该文件被视为非常旧,其规则被忽略。

‘-O[type]’
‘--output-sync[=type]’
确保每个配方的完整输出以一个不间断的顺序打印。 此选项仅在使用--jobs选项同时运行多个配方时才有用。如果配方生成此选项,则将显示此选项输出。
如果没有类型或类型“目标”,则每个目标的整个配方的输出将组合在一起。 使用“line”类型,配方中每行的输出将组合在一起。 使用'recurse'类型,整个递归make的输出被组合在一起。 类型为“none”时,不执行输出同步。

‘-p’
‘--print-data-base’
打印通过读取makefile产生的数据库(规则和变量值); 然后像往常一样或以其他方式指定执行。 这也会打印'-v'开关给出的版本信息(见下文)。 要打印数据库而不尝试重新创建任何文件,请使用'make -qp'。 要打印预定义规则和变量的数据库,请使用'make -p -f / dev / null'。 数据库输出包含配方和变量定义的文件名和行号信息,因此它可以是复杂环境中有用的调试工具。

‘-q’
‘--question’
“问题模式”。 不要运行任何食谱或打印任何东西; 如果指定的目标已经是最新的,则返回一个为零的退出状态,如果需要重建,则返回一个,如果遇到错误则返回两个。

‘-r’
‘--no-builtin-rules’
消除使用内置隐式规则。 您仍然可以通过编写模式规则来定义自己的规则。 '-r'选项还清除后缀规则的默认后缀列表。 但您仍然可以使用.SUFFIXES规则定义自己的后缀,然后定义自己的后缀规则。 请注意,只有规则受-r选项的影响; 默认变量仍然有效; 请参阅下面的“-R”选项。

‘-R’
‘--no-builtin-variables’
消除使用内置的特定于规则的变量。 当然,你仍然可以定义自己的。 '-R'选项也会自动启用'-r'选项,因为没有任何对它们使用的变量的定义就没有隐含规则。

‘-s’
‘--silent’
‘--quiet’
无声操作; 不要在执行时打印食谱。

‘-S’
‘--no-keep-going’
‘--stop’
取消'-k'选项的效果。 这是永远不必要的,除了在递归make中,'-k'可能通过MAKEFLAGS从顶级make继承,或者如果你在环境中的MAKEFLAGS中设置'-k'。

‘-t’
‘--touch’
触摸文件(最新标记它们而不是真正更改它们)而不是运行它们的配方。 这用于假装食谱已经完成,以便欺骗未来的make调用。

‘--trace’
如何跟踪执行的信息。 打印要执行的整个配方,即使是通常无声的配方(由于.SILENT或'@')。 还会打印定义配方的makefile名称和行号,以及有关重建目标的原因的信息。

‘-v’
‘--version’
打印制作程序的版本加上版权,作者列表和没有保证的通知; 然后退出。

‘-w’
‘--print-directory’
在执行makefile之前和之后打印包含工作目录的消息。 这对于追踪复杂的递归make命令嵌套中的错误非常有用。

‘--no-print-directory’
禁用在-w下打印工作目录。 当-w自动打开时,此选项很有用,但您不希望看到额外的消息。

‘-W file’
‘--what-if=file’
‘--new-file=file’
‘--assume-new=file’
假装刚刚修改了目标文件。 与'-n'标志一起使用时,会显示如果要修改该文件会发生什么。 没有'-n',它几乎与在运行make之前在给定文件上运行touch命令相同,除了修改时间仅在make的想象中改变。

‘--warn-undefined-variables’
每当make看到对未定义变量的引用时发出警告消息。 当您尝试调试以复杂方式使用变量的makefile时,这会很有用。


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值