我正在创建一个Makefile,将输出文件(foo.o)移动到另一个目录(baz).
输出文件根据需要移动到目录.但是,如果我make再次输入make,则不会重新编译输出文件,mv当它尝试将不存在的空文件移动到目录时会出错baz.
这就是我make all在所有编译后在规则中定义的内容:
-test -e "foo.o" || mv -f foo.o ../baz
Run Code Online (Sandbox Code Playgroud)
不幸的是,我仍然遇到错误.
alt*_*dky 103
食谱中的错误(来自TFM)
要忽略配方行中的错误
-,请在行的文本的开头(在初始选项卡之后)写入a .
所以目标将是这样的:
moveit:
-mv foo.o ../baz
Run Code Online (Sandbox Code Playgroud)
Rio*_*iot 31
我注意到没有人真正回答过原来的问题本身,特别是如何忽略错误(目前所有答案都只关注调用命令,如果它不会导致错误).
要实际忽略错误,您只需执行以下操作:
mv -f foo.o ../baz 2>/dev/null; true
Run Code Online (Sandbox Code Playgroud)
这将把stderr输出重定向到null,并遵循命令true(它总是返回0,导致make相信命令成功而不管实际发生了什么),允许程序流继续.
Cha*_*les 10
+@[ -d $(dir $@) ] || mkdir -p $(dir $@)
Run Code Online (Sandbox Code Playgroud)
是我用来静默创建一个文件夹,如果它不存在.对于你的问题,这样的事情应该有效
-@[ -e "foo.o" ] && mv -f foo.o ../baz
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35772 次 |
| 最近记录: |