如何gmake
在不修改Makefile
?的情况下输出所有命令的退出状态代码?如果Makefile
可以选择修改,则可能会发生以下情况:
$(CC) -c -o $@ $< $(CFLAGS); echo $$?
到目前为止,我发现的另一种方法是包装我正在运行的命令。例如,如果
gcc -o $@ $^ $(CFLAGS) $(LIBS)
是正在运行的命令,并且当前目录.
位于PATH
变量的前面,那么您可以创建一个gcc
在当前目录中调用的脚本,其内容如下:
/usr/bin/gcc "$@"; echo $?
我想知道是否有一个更好的,更少hacky,更优雅的解决方案?
请注意,您建议的所有解决方法都已损坏:因为您现在echo
作为配方中的最后一条命令运行,所以配方将始终以返回码退出echo
,这始终是成功的。如果按照说明进行更改,换句话说,make将不再检测到任何构建失败,并将每条命令视为成功。
为了使这项工作,您必须编写如下内容:
$(CC) -c -o $@ $< $(CFLAGS); r=$$?; echo $$r; exit $$r
我可以想到的唯一一种“干净”的方法,而无需更改makefile,但仍然可以处理所有不同的目标,那就是SHELL
使用自己的一种行为来更改make use。不幸的是,这有点棘手,但是这样的方法应该可以工作:
$ cat shexit
#!/bin/sh
/bin/sh "$@"
r=$?
echo $r
exit $r
$ chmod 755 shexit
$ make SHELL=$(pwd)/shexit
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句