Makefile 需要帮助理解为什么ifeq不工作

Makefile 需要帮助理解为什么ifeq不工作,makefile,Makefile,我在makefile中有以下代码: TEMP="VBU538ForBootloader" # build build: .build-post .build-pre: # Add your pre 'build' code here... .build-post: .build-impl @echo "Current config:" $(CONF) @echo "Compare to:" $(TEMP) ifeq ($(CONF),$(TEMP)) @ech

我在makefile中有以下代码:

TEMP="VBU538ForBootloader"


# build
build: .build-post

.build-pre:
# Add your pre 'build' code here...

.build-post: .build-impl

    @echo "Current config:" $(CONF)
    @echo "Compare to:" $(TEMP)

ifeq ($(CONF),$(TEMP))
    @echo "Making production files for VBU538 .... "
else
    @echo "Skipping production files."
endif
不知何故,ifeq并没有达到我预期的效果,尽管在我看来,我的代码与其他示例类似。该代码生成以下输出:

Current config: VBU538ForBootloader
Compare to: VBU538ForBootloader
Skipping production files.
我总是得到
跳过生产文件。
尽管我希望输出应该是
为VBU538制作生产文件….

有人知道其行为不符合预期的原因吗?

您的代码不是预期的,因此很难提供帮助。可能是您的
COMP
TEMP
变量看起来相同,但它们不相同(空格、其他不可见字符…),您可以尝试使用以下方法进行检查:

    @echo 'Current config: X$(CONF)X'
    @echo 'Compare to: X$(TEMP)X'
而不是

    @echo "Current config:" $(CONF)
    @echo "Compare to:" $(TEMP)
您的代码不是一个简单的代码,因此很难提供帮助。可能是您的
COMP
TEMP
变量看起来相同,但它们不相同(空格、其他不可见字符…),您可以尝试使用以下方法进行检查:

    @echo 'Current config: X$(CONF)X'
    @echo 'Compare to: X$(TEMP)X'
而不是

    @echo "Current config:" $(CONF)
    @echo "Compare to:" $(TEMP)

我最终发现了问题所在。谢谢大家的努力。最终我有一种预感,当我调用make时,使用了错误的make实用程序。事实证明,我必须使用与微控制器IDE附带的make实用程序相同的make实用程序。我不确定为什么需要这样做,但使用IDE附带的make实用程序解决了这个问题。

我最终发现了这个问题。谢谢大家的努力。最终我有一种预感,当我调用make时,使用了错误的make实用程序。事实证明,我必须使用与微控制器IDE附带的make实用程序相同的make实用程序。我不知道为什么需要这样做,但使用IDE附带的make实用程序解决了这个问题。

我甚至对您得到的除了错误以外的任何东西感到惊讶。根据您所展示的,您应该会得到如下错误:
***配方在第一个目标之前开始。停止。
因为你的食谱没有目标。你100%确定你的Makefile就是你展示的吗?很抱歉,我试图简化我的示例,但我添加了我认为你缺少的行。我甚至对你得到的除了错误以外的任何东西感到惊讶。根据您所展示的,您应该会得到如下错误:
***配方在第一个目标之前开始。停止。
因为你的食谱没有目标。你100%确定你的Makefile就是你所展示的吗?很抱歉,我试图简化我的示例,但是我添加了我认为你缺少的行。上面的结果是
当前配置:XVBU538ForBootloaderX
。完整的makefile是由MPLAB-xide(基于Netbeans)生成的,因此遗憾的是,这里给出的文件有点太大。我将试着看看我是否可以制作一个小的可复制的makefile。那么另一个变量呢?它是否也打印
与:XVBU538ForBootloaderX
比较或
与:XVBU538ForBootloaderX
比较或其他任何内容?上面的结果是
当前配置:XVBU538ForBootloaderX
。完整的makefile是由MPLAB-xide(基于Netbeans)生成的,因此遗憾的是,这里给出的文件有点太大。我将试着看看我是否可以制作一个小的可复制的makefile。那么另一个变量呢?它是否也打印
与:XVBU538ForBootloaderX
比较或
与:XVBU538ForBootloaderX
比较或其他任何内容?