如果是makefile中的语句

时间:2013-07-11 13:27:57

标签: makefile

我发现我可以在makefile中使用ifneq并尝试比较0和命令stat的输出:

@for f in `find $(PATH_PAGES) -name *.hbs`; do \
    ifneq "`stat -c '%Y' $$f`" "0";
        //some code here
    endif
done

但是在终端我遇到了错误:ifneq:command not found

有没有不同的方法来比较这个或者我做错了什么?

3 个答案:

答案 0 :(得分:4)

在这种情况下你想要使用Make的ifneq,因为它在将命令交给shell之前进行了文本替换,但你有一个需要的shell循环根据shell命令的输出,在每次迭代中执行不同的操作。

改为使用shell if

if [ "`stat -c '%Y' $$f`" != "0" ]; then
    //some code here
fi

答案 1 :(得分:2)

如果你想使用makefile的if条件,那么在if语句之前不应该有[TAB],因为如果你指定[TAB]那么它被视为shell命令,这就是为什么你得到ifneq:command not found它的错误没有贝壳。

可能是这个Conditionals in Makefile: missing separator error? 可以帮助您更好地理解makefile

答案 2 :(得分:0)

我发现我需要在if之前加上@,并且反斜杠也被证明是必需的-

@if [ "`stat -c '%Y' $$f`" != "0" ]; then\
    echo hello world;\
fi