需要帮助以了解为什么ifeq不起作用

时间:2019-11-06 06:09:40

标签: 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))
    @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 ....

有人知道其不按预期运行的原因吗?

2 个答案:

答案 0 :(得分:2)

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

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

代替

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

答案 1 :(得分:0)

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