GNU make命令格式如下:
make [ -f makefile ] [ options ] ... [ targets ] ...
make命令各选项的作用如下:
“-b”:同“-m”。
“-m”:为了其它版本的make兼容性,这个选项被忽略。
“-B”:同“–always-make”,无条件编译所有目标。
“-C dir”:同“–directory=dir”,在读取makefile文件或者做其它事情之前先切换到dir目录,如果指定了多个该选项,会逐个的后一个相对于前一个的进行解释,例如“-C / -C etc”等同于“-C /etc”,主要用于递归的(循环的)make命令调用。
“-d”:除了正常处理之外还打印调试信息,包括可能需要重新编译的文件、进行时间戳比较的文件及结果、确实需要重新编译的文件、隐含规则,以及那些make命令实际应用的规则。
“–debug[=FLAGS]”:除了正常处理之外还打印调试信息,不指定参数FLAGS时同“-d”。FLAGS可以是“a”,表示打印所有调试信息(同“-d”);可以是“b”,表示基本调试信息;可以是“v”,表示稍多的基本调试信息;可以是“i”,表示隐含规则;可以是“j”,表示命令调用的详细信息;还可以是“m”,表示重新编译时的调试信息。
“-e”:同“–environment-overrides”,环境变量优先于makefile文件中的变量。
“-f file”:同“–file=file”或“–makefile=FILE”,把文件file作为make命令的makefile文件。
“-i”:同“–ignore-errors”,重新编译时忽略执行的命令的所有错误。
“-I dir”:同“–include-dir=dir”,把dir目录作为include包含makefile文件的搜索路径,通过这个选项指定了多个搜索路径时,按指定的顺序进行搜索,与make命令的其它选项不同的是,这个选项的格式可以是“-Idir”,即没有空格,兼容于C预处理器的同一个选项。
“-j [jobs]”:同“–jobs[=jobs]”,指定并行作业(命令执行)个数,为了提高编译速度,一般为CPU核心数目的两倍,这个选项指定了多次时最后一个选项有效,不指定具体的jobs个数时就没有这个限制。并行作业的一个弊端是,多个同时执行的命令的输出信息将同时输出到终端,当出现错误时很难根据一大堆凌乱的信息来区分是哪条命令执行错误。
“-k”:同“–keep-going”,错误发生后,继续尽可能多地处理其它任务,某个目标失败时,依赖于它的其它目标不能重新编译,但这个目标本身的依赖还是可以正常处理的。
“-l [load]”:同“–load-average[=load]”,参数load为浮点数,当某些作业正在运行且负载均值至少是load时,不执行新的作业(命令),不指定具体的load时就会移除之前的负载限制。
“-L”:同“–check-symlink-times”,在符号链接和目标文件之间使用最近的“mtime”。
“-n”:同“–just-print”、“–dry-run”和“–recon”,打印即将执行的命令,但实际上并不执行它们。
“-o file”:同“–old-file=file”和“–asume-old=file”,这个file当作是一个非常旧的文件,忽略其编译规则。
“-p”:同“–print-data-base”,打印从makefile文件中读到的基本数据,包括基本规则和变量值,然后正常执行,同时还会打印出选项“-v”提供的版本信息,如果只是打印这些信息而不重新编译任何文件,可执行命令“make -p -f/dev/null”。
“-q question”:问题模式,不运行任何命令,不打印任何信息,只返回一个退出状态,指定的目标为最新时返回0,否则非0。
“-r”:同“–no-builtin-rules”,消除内置的隐含规则,清除后缀规则中默认的后缀列表。
“-R”:同“–no-builtin-variables”,不定义任何内置的变量。
“-s”:同“–silent”、“–quiet”,安静模式,不打印执行的命令。
“-S”:同“–no-keep-going”、“–stop”,取消选项“-k”的作业,如果不是在编译环境中给MAKEFLAGS设置了“-k”选项,也不是递归(循环)make命令继承了MAKEFLAGS的“-k”选项时,这个选项是没必要使用的。
“-t”:同“–touch”,只是更新文件的时间戳而不执行它们的命令,就好像命令已经执行完成了一样,这可以欺骗将来执行的make命令。
“-v”:同“–version”,打印make命令的版本、版权、作者及注意事项。
“-w”:同“–print-directory”,执行任务前后打印包含工作目录的信息,有助于复杂的嵌套的递归(循环)命令的错误排查。
“–no-print-directory”:关闭选项“-w”。
“-W file”:同“–what-if=file”、“–new-if=file”和“–assume-new=file”,假设目标file刚被修改过,使用了选项“-n”时,显示这个文件被修改后将发生的事情,否则就好像在执行make命令前touch了这个文件一样。
“–warn-undefind-variables”:使用未定义的变量时给出警告。