我的makefile中有这样的行:
VERSION=0.7.12
SED=sed
ALL: www/Makefile
www/Makefile: Makefile
test -d www && $(SED) -e "s/{{VERSION}}/$(VERSION)/g" www/Makefile.in > www/Makefile
代码正在执行文件时没有www目录,但我收到了消息:
make: *** [www/Makefile] Błąd 1
运行make时(Błąd是波兰语错误)
答案 0 :(得分:1)
检查退出代码,如果不是真(不是0)则失败。在你的测试中,你使用“x&& y”,这意味着如果x不为真,那么y不会运行...但它也意味着表达式的结果是“不正确”。所以make显示错误。
一般来说,在makefile中,你只想使用or-expressions(||)not和-expressions:
! test -d www || $(SED) ...
或者这个:
test ! -d www || $(SED) ...
或者,您可以执行以下操作:
test -d www && $(SED) ... || true
(即使sed失败,这个总是成功的)。或者更简单:
if [ -d www ]; then $(SED) ... ; fi