我在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 ....
有人知道其不按预期表现的原因吗?
您的代码不是MCVE,因此很难提供帮助。可能是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实用程序。我不确定为什么需要这样做,但是使用IDE附带的make实用程序可以解决此问题。