Makefile的以下简单PHONY目标失败:
dir=/etc
file=fstab
install:
-test ! -f $(dir)/$(file)
显示错误:
make install
-I/root/module
test ! -f /etc/fstab
make: [install] Error 1 (ignored)
如果我从条件中删除!
符号,则没有问题。
有人可以帮我解决这个问题吗?我希望这是bash / Makefile目标中的一个错误。
答案 0 :(得分:0)
你的食谱:
-test ! -f $(dir)/$(file)
如果$(dir)/$(file)
不存在,将成功(返回0)
如果$(dir)/$(file)
存在,则失败(返回非零)。因为-
前缀,make会忽略失败,默认会报告它忽略失败,并且会继续
而不是停止。
查找
<强>生成文件强>
dir=/etc
file=fstab
.PHONY: all install
all: install
echo "Success"
install:
-test ! -f $(dir)/$(file)
运行它:
$ make
test ! -f /etc/fstab
Makefile:8: recipe for target 'install' failed
make: [install] Error 1 (ignored)
echo "Success"
Success
bash
没有被打破。 make
没有被打破。没有错。
如果您甚至不希望看到make
的progess和诊断输出
你可以让他们沉默:
$ make --silent
Success