Makefile中配置含冒号的路径触发编译报错如何解决?
nRF5 SDK Makefile Windows绝对路径转义问题解决方案
你的问题判断是准确的,该错误是由GNU Make对Windows盘符后的冒号自动转义插入反斜杠导致的路径识别失败。你可以通过以下几种方案解决该问题:
方案1:改回相对路径(最推荐)
nRF SDK的示例Makefile原生设计基于相对路径工作,兼容性最高,不会触发路径转义问题。你只需要根据Makefile新的存放位置,重新计算到SDK根目录的相对层级即可,保持和原示例../../../的格式一致,根据新位置调整向上回溯的层数就行。方案2:修改绝对路径的写法适配Make规则
如果必须使用绝对路径,可以选以下任意一种写法:- 用
realpath函数包裹路径,让Make自动处理路径格式:SDK_ROOT := $(realpath C:/Nordic_SDKS/nRF5SDK1702d674dde) - 把Windows盘符格式替换为类Unix写法,将
C:/替换为/c/:
该写法适配MinGW、GNU Arm Embedded Toolchain配套的Windows版Make工具。SDK_ROOT := /c/Nordic_SDKS/nRF5SDK1702d674dde
- 用
方案3:升级Make版本
部分旧版本的Windows版GNU Make存在Windows路径转义的已知bug,升级到最新的稳定版Make工具即可修复该问题。
你可以在Makefile中添加一行$(info SDK_ROOT当前解析值:$(SDK_ROOT)),运行make时即可打印出实际解析的路径,确认转义问题是否被修复。
内容的提问来源于stack exchange,提问作者Eric Busch
相关产品推荐
相关产品推荐

