gpt4 book ai didi

path - Makefile ifeq问题

转载 作者:行者123 更新时间:2023-12-02 06:51:56 27 4
gpt4 key购买 nike

我正在尝试在我的规则模式中使用 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

当我运行这个时,我得到:

"/bin/sh: -c: line 0: syntax error near unexpected token `mcc.exe,mcc.exe'
/bin/sh: -c: line 0: `ifeq(mcc.exe,mcc.exe)'"

但是,当我不使用缩进时,我得到:“Makefile:77: * 缺少分隔符。停止。”

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

提前谢谢您!

最佳答案

包含 ifeq...elseendif 的行不应以制表符开头。如果这样做,它们将被视为配方的一部分并发送到 shell;这会导致/bin/sh 出现语法错误;请参阅the make manual举个例子。

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

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

关于path - Makefile ifeq问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5714621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com