Path Makefile-ifeq问题

Path Makefile-ifeq问题,path,makefile,cygwin,Path,Makefile,Cygwin,我试图在我的规则模式中使用ifeq,但我有问题。这是我遇到麻烦的规则: $(OBJS): $(OBJDIR)/%.o : ../%.c @mkdir -p $(dir $@) ifeq(mcc.exe,$(CC)) o_file:=$(shell echo $@ | sed -e 's/\/cygdrive\///' | sed -e 's/\([a-zA-Z]\)/\1:/') $(CC) $(CFLAGS) $< -o $(o_file)

我试图在我的规则模式中使用ifeq,但我有问题。这是我遇到麻烦的规则:

$(OBJS): $(OBJDIR)/%.o : ../%.c
    @mkdir -p $(dir $@)
    ifeq(mcc.exe,$(CC))
        o_file:=$(shell echo $@ | sed -e 's/\/cygdrive\///' | sed -e 's/\([a-zA-Z]\)/\1:/')
        $(CC) $(CFLAGS) $< -o $(o_file)
    else
        $(CC) $(CFLAGS) $< -o $@
    endif
但是,当我不使用缩进时,我会得到:“Makefile:77:*缺少分隔符。停止。”

我在Cygwin上使用GNU make 3.81。ifeq的整个问题来自这样一个事实:我有两个工具链的相同Makefile,其中一个(mcc.exe)不能处理/cygdrive/c/../something路径,但应该有c://……/something路径。如果你知道解决这个问题的其他方法,我也将非常感激


提前谢谢你

包含
ifeq…
else
endif
的行不应以制表符开头。如果他们这样做,他们被视为食谱的一部分,并发送到贝壳;这将导致从/bin/sh得到的语法错误;有关示例,请参见

我不太清楚为什么不使用缩进时会出现错误。也许你不能在这样的配方中定义一个变量


编辑:我看你已经找到答案了。因此,没有缩进,在
ifeq
和括号之间有一个空格。

我找到了答案!应该没有缩进,但ifeq和开放式括号“(”)之间应该有空格。这解决了问题!希望这有助于某人…这也让我有点难堪,谢谢
"/bin/sh: -c: line 0: syntax error near unexpected token `mcc.exe,mcc.exe'
/bin/sh: -c: line 0: `ifeq(mcc.exe,mcc.exe)'"