Zephyr RTOS开发环境搭建(CMake与Ninja)上周帮一个客户调试Zephyr项目,对方在Windows上折腾了三天,编译总是报“ninja: error: loading ‘build.ninja’”。远程一看,CMake缓存路径里混了空格,Ninja找不到构建文件。这种问题在Zephyr开发里太典型了——工具链本身不复杂,但环境配置的细节能卡住人好几天。今天这篇笔记,我就把CMake和Ninja在Zephyr里的正确打开方式掰开揉碎讲清楚。为什么Zephyr非要CMake+Ninja?Zephyr的构建系统不是普通的Makefile。它用CMake做元构建(生成构建规则),用Ninja做实际编译(并行执行任务)。这套组合拳的好处是:CMake处理跨平台配置和依赖解析,Ninja负责极速编译。你如果用过West命令行工具,会发现它底层调用的就是CMake和Ninja。但有个坑:很多人以为装了West就万事大吉,结果West报错时完全看不懂。West只是Zephyr的“管家”,真正的编译引擎是Ninja。理解这一点,你才能定位问题。安装CMake:版本不对直接翻车Zephyr对CMake版本有硬性要求。当前主线要求CMake 3.20以上,LTS版本(比如v3.6)至少需要3.13。我见过有人用Ubuntu 18.04自带的3.10版本编译,报了一堆“Unknown CMake command”错误。Windows用户注意
014、Zephyr RTOS开发环境搭建(CMake与Ninja)
Zephyr RTOS开发环境搭建(CMake与Ninja)上周帮一个客户调试Zephyr项目,对方在Windows上折腾了三天,编译总是报“ninja: error: loading ‘build.ninja’”。远程一看,CMake缓存路径里混了空格,Ninja找不到构建文件。这种问题在Zephyr开发里太典型了——工具链本身不复杂,但环境配置的细节能卡住人好几天。今天这篇笔记,我就把CMake和Ninja在Zephyr里的正确打开方式掰开揉碎讲清楚。为什么Zephyr非要CMake+Ninja?Zephyr的构建系统不是普通的Makefile。它用CMake做元构建(生成构建规则),用Ninja做实际编译(并行执行任务)。这套组合拳的好处是:CMake处理跨平台配置和依赖解析,Ninja负责极速编译。你如果用过West命令行工具,会发现它底层调用的就是CMake和Ninja。但有个坑:很多人以为装了West就万事大吉,结果West报错时完全看不懂。West只是Zephyr的“管家”,真正的编译引擎是Ninja。理解这一点,你才能定位问题。安装CMake:版本不对直接翻车Zephyr对CMake版本有硬性要求。当前主线要求CMake 3.20以上,LTS版本(比如v3.6)至少需要3.13。我见过有人用Ubuntu 18.04自带的3.10版本编译,报了一堆“Unknown CMake command”错误。Windows用户注意