如果makefile中的语句

问题描述 投票:0回答:3

我发现在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(命令未找到)

有没有别的方法来比较,或者我做错了什么?

makefile
3个回答
4
投票

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

使用shell的 if 来代替。

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

3
投票

如果你想使用makefile的if条件,那么在if语句前不应该有[TAB],因为如果你指定了[TAB],那么它将被视为shell命令,这就是为什么你会收到错误信息,即 ifneq:command not found 它的外壳不存在。

可能是这个 Makefile中的条件:缺少分隔符错误?可以帮助更好地理解makefile。


0
投票

我发现,我需要在前面的 if 附带 @事实证明,反斜杠也是必要的------。

@if [ "`stat -c '%Y' $$f`" != "0" ]; then\
    echo hello world;\
fi
© www.soinside.com 2019 - 2024. All rights reserved.