我正在制作一个Makefile,它将输出文件(foo.o)移动到另一个目录(baz)。
输出文件会根据需要移动到该目录。但是,由于如果我再次输入make,make将不会重新编译输出文件,因此mv在尝试将不存在的空文件移动到baz目录时会得到一个错误。
这是我在所有编译后在我的规则make all中定义的内容:
-test -e "foo.o" || mv -f foo.o ../baz不幸的是,我仍然收到错误。
发布于 2010-06-30 02:42:03
+@[ -d $(dir $@) ] || mkdir -p $(dir $@)是我用来在文件夹不存在时静默创建它的工具。对于你的问题,像这样的东西应该是可行的
-@[ -e "foo.o" ] && mv -f foo.o ../baz发布于 2013-01-10 07:24:11
Errors in Recipes (来自TFM)
要忽略配方行中的错误,请在该行文本的开头(在初始制表符之后)编写一个
-。
所以目标应该是这样的:
moveit:
-mv foo.o ../baz发布于 2013-01-08 21:33:27
我注意到还没有人真正回答原始问题本身,特别是如何忽略错误(目前所有的答案都只涉及在不会导致错误的情况下调用命令)。
要真正忽略错误,您可以简单地执行以下操作:
mv -f foo.o ../baz 2>/dev/null; true这会将stderr输出重定向到null,并在命令后面跟上true (它总是返回0,使make相信命令成功,而不管实际发生了什么),从而允许程序流继续。
https://stackoverflow.com/questions/3143635
复制相似问题