如何在makefile中执行命令之前检查目录是否存在

时间:2013-12-18 21:48:49

标签: makefile directory file-exists

我的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是波兰语错误)

1 个答案:

答案 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