Makefile规则和If语句-如何?

| 我是Makefile的新手,所以请多多包涵。 我需要修改Makefile,以便某些规则根据变量调用不同的实用程序。 现在,规则如下:
ci:
    [shell syntax for tool (A)]
但是现在我需要ci,以根据变量使用不同的语法。因此,我在文件顶部定义了一个全局变量:
TOOL = toolA
要么
TOOL = toolB
理想情况下,我想要的是这样的东西,但显然它不起作用:
ifeq ($TOOL, toolA)
    ci:
        [syntax for tool (A)]
else
    ci:
        [syntax for tool (B)
endif
有谁知道正确实现这样的最佳方法? 谢谢!! 编辑:工具语法比一行更复杂。有时它是多行,而不仅仅是\“ toolA args etc etc \”。对困惑感到抱歉!     
已邀请:
        您只是缺少一些括号:
ifeq ($(TOOL), toolA)
...
附言您可以使条件变得更严格(并删除一些冗余):
ci:
ifeq ($(TOOL), toolA)
    [syntax for tool (A)]
else
    [syntax for tool (B)
endif
    
        通常,您可以使用宏来执行此操作:
  # put tool A or tool B command line here
  TOOL=...

  ci:
       $(TOOL) args
可以用
TOOLARGS
宏之类的东西来扩展它,
  ci:
       $(TOOL) $(TOOLARGS)
然后,您可以修改makefile,或将宏放在命令行中
  $ make TOOL=... TOOLARGS=...
如果要封装它,则可以使用if来设置参数。     
        尝试这个:
TOOLARGS_toolA = -a1 -a2
TOOLARGS_toolB = -b1 -b2

ci:
        $(TOOL) $(TOOLARGS_$(TOOL))
现在,如果
TOOL
toolA
,它将使用参数
-a1 -a2
,如果
TOOL
toolB
,那么它将使用参数
-b1 -b2
。     

要回复问题请先登录注册