Makefile 需要帮助理解为什么ifeq不工作
我在makefile中有以下代码:Makefile 需要帮助理解为什么ifeq不工作,makefile,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)) @ech
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.
我总是得到跳过生产文件。
尽管我希望输出应该是为VBU538制作生产文件….
有人知道其行为不符合预期的原因吗?您的代码不是预期的,因此很难提供帮助。可能是您的COMP
和TEMP
变量看起来相同,但它们不相同(空格、其他不可见字符…),您可以尝试使用以下方法进行检查:
@echo 'Current config: X$(CONF)X'
@echo 'Compare to: X$(TEMP)X'
而不是
@echo "Current config:" $(CONF)
@echo "Compare to:" $(TEMP)
您的代码不是一个简单的代码,因此很难提供帮助。可能是您的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实用程序相同的make实用程序。我不确定为什么需要这样做,但使用IDE附带的make实用程序解决了这个问题。我最终发现了这个问题。谢谢大家的努力。最终我有一种预感,当我调用make时,使用了错误的make实用程序。事实证明,我必须使用与微控制器IDE附带的make实用程序相同的make实用程序。我不知道为什么需要这样做,但使用IDE附带的make实用程序解决了这个问题。我甚至对您得到的除了错误以外的任何东西感到惊讶。根据您所展示的,您应该会得到如下错误:
***配方在第一个目标之前开始。停止。
因为你的食谱没有目标。你100%确定你的Makefile就是你展示的吗?很抱歉,我试图简化我的示例,但我添加了我认为你缺少的行。我甚至对你得到的除了错误以外的任何东西感到惊讶。根据您所展示的,您应该会得到如下错误:***配方在第一个目标之前开始。停止。
因为你的食谱没有目标。你100%确定你的Makefile就是你所展示的吗?很抱歉,我试图简化我的示例,但是我添加了我认为你缺少的行。上面的结果是当前配置:XVBU538ForBootloaderX
。完整的makefile是由MPLAB-xide(基于Netbeans)生成的,因此遗憾的是,这里给出的文件有点太大。我将试着看看我是否可以制作一个小的可复制的makefile。那么另一个变量呢?它是否也打印与:XVBU538ForBootloaderX
比较或与:XVBU538ForBootloaderX
比较或其他任何内容?上面的结果是当前配置:XVBU538ForBootloaderX
。完整的makefile是由MPLAB-xide(基于Netbeans)生成的,因此遗憾的是,这里给出的文件有点太大。我将试着看看我是否可以制作一个小的可复制的makefile。那么另一个变量呢?它是否也打印与:XVBU538ForBootloaderX
比较或与:XVBU538ForBootloaderX
比较或其他任何内容?