Makefile规则和If语句 - 如何?

Ray*_*szt 5 unix if-statement makefile tcsh

我是Makefiles的新手所以请耐心等待.

我需要修改一个Makefile,这样一些规则会根据变量调用不同的实用程序.

现在,规则看起来像:

ci:
    [shell syntax for tool (A)]
Run Code Online (Sandbox Code Playgroud)

但是现在我需要ci根据变量使用不同的语法.所以我在文件的顶部定义了一个全局变量:

TOOL = toolA
Run Code Online (Sandbox Code Playgroud)

要么

TOOL = toolB
Run Code Online (Sandbox Code Playgroud)

理想情况下我喜欢的是这样的东西,但显然它不起作用:

ifeq ($TOOL, toolA)
    ci:
        [syntax for tool (A)]
else
    ci:
        [syntax for tool (B)
endif
Run Code Online (Sandbox Code Playgroud)

有谁知道正确实现这样的事情的最佳方法?

谢谢!!

编辑:工具语法比一行更复杂.有时它的多行而不仅仅是"toolA args等".对困惑感到抱歉!

Bet*_*eta 5

你只是缺少一些括号:

ifeq ($(TOOL), toolA)
...
Run Code Online (Sandbox Code Playgroud)

PS您可以使条件更严格(并删除一点冗余):

ci:
ifeq ($(TOOL), toolA)
    [syntax for tool (A)]
else
    [syntax for tool (B)
endif
Run Code Online (Sandbox Code Playgroud)