Makefile If语句生成文件tcsh

Makefile If语句生成文件tcsh,makefile,csh,tcsh,Makefile,Csh,Tcsh,我想要像这样的东西: my_rule: if($(VAR) == $@) then echo 'ok' else echo 'ko' endif 我必须使用tsch,但我知道Makefile使用sh,所以我真的想知道这里是否必须使用sh或tcsh if语句语法? tsch脚本中if语句的正确语法是(我选中了): 我试着把和\在我的Makefile中随处可见,但都不起作用。shell取自变量shell,

我想要像这样的东西:

my_rule:
       if($(VAR) == $@) then
             echo 'ok'
       else
             echo 'ko'
       endif
我必须使用tsch,但我知道Makefile使用sh,所以我真的想知道这里是否必须使用sh或tcsh if语句语法? tsch脚本中if语句的正确语法是(我选中了):


我试着把
\
在我的Makefile中随处可见,但都不起作用。

shell取自变量
shell
,如果未指定,则默认为
/bin/sh
。假设您没有覆盖shell,那么您的语法将是:

my_rule:
       if [ "$(VAR)" == "$@" ]; then \
         echo 'ok'; \
       else \
         echo 'ko'; \
       fi

您需要使用
\
将这些行连接到单个配方行中。请注意,这不会引入实际的换行符,因此您还必须使用
手动终止每个命令。最后,在变量周围加上引号,这样如果其中一个恰好为空,就不会出现语法错误。

shell取自变量
shell
,如果未指定,则默认为
/bin/sh
。假设您没有覆盖shell,那么您的语法将是:

my_rule:
       if [ "$(VAR)" == "$@" ]; then \
         echo 'ok'; \
       else \
         echo 'ko'; \
       fi

您需要使用
\
将这些行连接到单个配方行中。请注意,这不会引入实际的换行符,因此您还必须使用
手动终止每个命令。最后,在变量周围加上引号,这样如果其中一个恰好为空,就不会出现语法错误。

好的,所以我必须使用shell变量中定义的shell语法。所以我必须在shell变量中使用shell定义的语法。谢谢