这些参数可以通过man手册查看(红色是比较有用的选项): -b -m 忽略,提供其它版本make兼容性。 -B --always-make 强制重建所有规则的目标,不根据规则的依赖描述决定是否重建目标文件。 -C DIR --directory=DIR 在 读取Makefile之前,进入目录“DIR”,就是切换工作目录到“DIR”之后执行make。存在多个“-C”选项时,make的最终工作目录是第一 个目录的相对路径。如:“make –C / -C etc”等价于“make –C /etc”。一般此选项被用在递归地make调用中。 -d make 在执行过程中打印出所有的调试信息。包括:make认为那些文件需要重建;那些文件需要比较它们的最后修改时间、比较的结果;重建目标所要执行的命令;使 用的隐含规则等。使用“-d”选项我们可以看到make构造依赖关系链、重建目标过程的所有信息,它等效于“—debug=a”. —debug[=OPTIONS] make执行时输出调试信息。可以使用“OPTIONS”控制调试信息级别。默认是“OPTIONS=b”,“OPTIONS”的可能值为以下这些,首字母有效(all 和 aw等效)。 a(all) 输出所有类型的调试信息,等效于“-d”选项。 b(basic) 输出基本调试信息。包括:那些目标过期、是否重建成功过期目标文件。 v(verbose) “basic”级别之上的输出信息。包括:解析的makefile文件名,不需要重建文件等。此选项目默认打开“basic”级别的调试信息。 i(implicit) 输出所有使用到的隐含规则描述。此选项目默认打开“basic”级别的调试信息。 j(jobs) 输出所有执行命令的子进程,包括命令执行的PID等。 m(makefile) 也就是makefile,输出make读取makefile,更新makefile,执行makefile的信息。 -e --environment-overrides 使用系统环境变量的定义覆盖Makefile中的同名变量定义。 -f=FILE --file= FILE --makefile= FILE 指定“FILE”为make执行的makefile文件。 -h --help 打印帮助信息。 -i --ignore-errors 执行过程中忽略规则命令执行的错误。 -I DIR --include-dir=DIR 指定被包含makefile文件的搜索目录。在Makefile中出现“include”另外一个文件时,将在“DIR”目录下搜索。多个“-I”指定目录时,搜索目录按照指定顺序进行。 -j [JOBS] --jobs[=JOBS] 指定可同时执行的命令数目。在没有指定“-j”参数的情况下,执行的命令数目将是系统允许的最大可能数目。存在多个“-j”参数时,尽最后一个“-j”指定的数目(“JOBS”)有效。 -k --keep-going 执行命令错误时不终止make的执行,make尽最大可能的执行所有的命令,直到出现致命错误才终止。 -l LOAD --load-average[=LOAD] —max-load[=LOAD] 告诉make当存在其它任务在执行时,如果系统负荷超过“LOAD”(浮点数表示的),不再启动新任务。没有指定“LOAD”的“-I”选项将取消之前“-I”指定的限制。 -n --just-print --dry-run --recon 只打印出所要执行的命令,但不执行命令。 -o FILE --old-file= FILE --assume-old= FILE 指定文件“FILE”不需要重建,即使相对于它的依赖已经过期;同时也不重建依赖于此文件任何文件(目标文件)。注意:此参数不会通过变量“MAKEFLAGS”传递给子make进程。 -p --print-data-base 命 令执行之前,打印出make读取的Makefile的所有数据(包括规则和变量的值),同时打印出make的版本信息。如果只需要打印这些数据信息(不执 行命令)可以使用“make -qp”命令。查看make执行前的预设规则和变量,可使用命令“make –p -f /dev/null”。 -q --question 称为“询问模式”;不运行任何命令,并且无输出。make只是返回一个查询状态。返回状态为0表示没有目标需要重建,1表示存在需要重建的目标,2表示有错误发生。 -r --no-builtin-rules 取 消所有内嵌的隐含规则,不过你可以在Makefile中使用模式规则来定义规则。同时选项“-r”会取消所有支持后追规则的隐含后缀列表,同样我们也可以 在Makefile中使用“.SUFFIXES”定义我们自己的后缀规则。“-r”选项不会取消make内嵌的隐含变量。 -R --no-builtin-variabes 取消make内嵌的隐含变量,不过我们可以在Makefile中明确定义某些变量。注意,“-R”选项同时打开“-r”选项。因为没有了隐含变量,隐含规则将失去意义(隐含规则是以内嵌的隐含变量为基础的)。 -s --silent --quiet 取消命令执行过程的打印。 -S --no-keep-going --stop 取消“-k”选项。在递归的make过程中子make通过“MAKEFLAGS”变量继承了上层的命令行选项。我们可以在子make中使用“-S”选项取消上层传递的“-k”选项,或者取消系统环境变量“MAKEFLAGS”中的“-k”选项。 -t —touch 和Linux的touch命令实现功能相同,更新所有目标文件的时间戳到当前系统时间。防止make对所有过时目标文件的重建。 -v --version 查看make版本信息。 -w --print-directory 在make进入一个目录读取Makefile之前打印工作目录。这个选项可以帮助我们调试Makefile,跟踪定位错误。使用“-C”选项时默认打开这个选项。参考本节前半部分“-C”选项的描述。 --no-print-directory 取消“-w”选项。可以是用在递归的make调用过程中,取消“-C”参数的默认打开“-w”功能。 -W FILE --what-if= FILE --new-file= FILE --assume-file= FILE 设定文件“FILE”的时间戳为当前时间,但不改变文件实际的最后修改时间。此选项主要是为实现了对所有依赖于文件“FILE”的目标的强制重建。 这个参数需要指定一个文件名。通常是一个存在源文件。make将当前系统时间作为这个文件的时间戳(假设这个文件被修改过,但不真正的更改文件本身的时间 戳)。因此这个文件的时间戳被认为最新的,在执行时依赖于这个文件的目标将会被重建。通过这种方式并结合“-n”参数,我们可以查看那些目标依赖于这个文 件(修改这个文件以后执行make那些目标会被更新)。 通常“-W”参数和“-n”参数一同使用,可以在修改一个文件后来检查修改会造成那些目标需要被更新,但并不执行更新的命令,只是打印命令。 “-W”和“-t”参数配合使用时,make将忽略其它规则的命令。只对依赖于“-W”指定文件的目标执行“touch”命令,在没有使用“-s”时,可 以看到那些文件执行了“touch”。需要说明的是,make在对文件执行“touch”时不是调用shell的命令,而是由make直接操作。 “-W”和“-q”参数配合使用时。由于将当前时间作为指定文件的时间戳(目标文件相对于系统当前时间是过时的),所以make的返回状态在没有错误发生时为1,存在错误时为2。 注意:以上三个参数同时使用时可能会出现错误 --warn-undefined-variables 在发现Makefile中存在对没有定义的变量进行引用时给出告警信息。此功能可以帮助我们调试一个存在多级套嵌变量引用的复杂Makefile。但是:我们建议在书写Makefile时尽量避免超过三级以上的变量套嵌引用。 (责任编辑:IT) |