首页 > 解决方案 > 需要帮助了解为什么 ifeq 不起作用

问题描述

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

解决方案


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

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

代替

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

推荐阅读