make/makefile中的加号+,减号-和at号@的含义
每个目标都可以具有与其关联的一系列 shell 命令,这些命令通常用来创建目标。此脚本中的每一条命令都必须以制表符开始。虽然任何目标都能够显示在相关性行上,但除非使用 :: 操作符,否则这些相关性中只有一个能够通过创建脚本来跟随。
如果命令行的第一个或前两个字符是 @ (at 符号)、-(连字符)和 +(加号)这几个符号之一或全部,那么将特别处理该命令,如下:
@ | 使命令在被执行前不被回显。 |
- | 使任何命令行的任何非零退出状态都被忽略。 |
+ | 使命令行可以通过指定 -n、-q 或 -t 选项来执行。 |
所以,简单的说就是:
【make中命令行前面加上减号】
就是,忽略当前此行命令执行时候所遇到的错误。
而如果不忽略,make在执行命令的时候,如果遇到error,会退出执行的,加上减号的目的,是即便此行命令执行中出错,比如删除一个不存在的文件等,那么也不要管,继续执行make。
【make中命令行前面加上at符号@】
就是,在make执行时候,输出的信息中,不要显示此行命令。
makefile中@是不打印命令本身的意思 ,以下Makefile执行make clean时终端不会打印rm -f main2.o的信息。
clean:
@rm -f main2.o
而正常情况下,make执行过程中,都是会显示其所执行的任何的命令的。如果你不想要显示某行的命令,那么就在其前面加上@符号即可。
【make中命令行前面加上加号+】
【make中命令行前面加上加号+】
+号修饰符,要求make执行命令,即使使用了-n选项。
make –help
帮助中-n选项的含义
-n, –just-print, –dry-run, –recon
Don’t actually run any commands; just print them.
使用加号修饰符让命令始终执行。
简单的示例Makefile
all:
@echo aaaa
@+echo bbbb
使用make执行的结果为
$ make
aaaa
bbbb
使用make -n执行的结果为
echo aaaa
echo bbbb
bbbb
参考:
http://blog.csdn.net/asbhunan129/article/details/70891480
http://blog.5ibc.net/p/41884.html