我在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 ....
有人知道其不按预期运行的原因吗?
答案 0 :(得分:2)
您的代码不是MCVE,因此很难提供帮助。可能您的COMP
和TEMP
变量看起来相同,但它们却不相同(空格,其他不可见字符...)。您可以尝试使用以下方法进行检查:
@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实用程序可以解决问题。