需要帮助来理解为什么ifeq不起作用

问题描述 投票:0回答:2

我在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.

我总是得到Skipping production files.,尽管我期望输出应该是Making production files for VBU538 ....

有人知道其不按预期表现的原因吗?

makefile
2个回答
2
投票

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

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

代替

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

0
投票

我终于找到了问题。感谢大家的努力。最终我有种预感,当我打电话给make时,使用了错误的make实用程序。原来,我必须使用与IDE一起用于微控制器的make实用程序。我不确定为什么需要这样做,但是使用IDE附带的make实用程序可以解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.