west的工作区
如果按照Zephyr启动指南,则您的工作空间看起来是这样的。
zephyrproject目录:这个目录是项目目录,通过west init来指定,这个目录可以随便起。.west目录:west的配置目录,是通过执行west init自动生成的。.west/config文件: west的配置文件,里面记录了west的配置选项。
- 主清单仓库:通过在
.west/config中指定manifest.path来指定 - 主清单文件:通过在
.west/config中指定manifest.file来指定 - 项目:指的就是第三方模块和应用程序
- 扩展:可以实现自定义扩展
west指令 -
west工作区的拓扑方式
T1: 星型拓扑, zephyr作为主存储库清单
- T2: 星型拓扑, zephyr应用程序作为主存储库清单
-
T1: 星型拓扑, zephyr作为主存储库清单
Zephyr存储库充当中央存储库,并在其
west.yml中指定其模块(外部项目)。与现有机制的类比:以zephyr做为超级项目,模块和应用程序做为Git子模块。
T2: 星型拓扑, zephyr应用程序作为主存储库清单
对于开发单个应用非常有用
- Zephyr应用程序作为中央存储库,并在
west.yml中声明在其中构建它所需的其他项目,包括zephyr存储库和任何需要的模块。 - 与现有机制的类比:以zephyr应用作为超级项目,Zephyr和其他项目作为子模块。
使用此拓扑的工作空间看起来像这样:
将Zephyr及其模块导入应用程序清单application/west.yml文件中:
manifest:remotes:- name: zephyrproject-rtosurl-base: https://github.com/zephyrproject-rtosprojects:- name: zephyrremote: zephyrproject-rtosrevision: v2.5.0import: trueself:path: application
如果您以这种方式使用,您仍然可以选择性地”覆盖”单个Zephyr模块。
将zephyr/west.yml里面的内容复制到application/west.yml中。
manifest:remotes:- name: zephyrproject-rtosurl-base: https://github.com/zephyrproject-rtosdefaults:remote: zephyrproject-rtosprojects:- name: zephyrrevision: v2.5.0west-commands: scripts/west-commands.yml- name: net-toolsrevision: some-sha-goes-herepath: tools/net-tools# ... other Zephyr modules go here ...self:path: application
T3: 森林拓扑, 独立的主存储库清单
- 适用于那些支持多个独立应用程序没有
中央存储库的开发。 - 专用的清单存储库,其中不包含 Zephyr 源代码,并指定了所有处于同一
级别的项目列表 - 与现有机制的类比:基于谷歌的源码分布
使用此拓扑的工作空间看起来像这样:
manifest-repo/west.yml的内容如下:
manifest:remotes:- name: zephyrproject-rtosurl-base: https://github.com/zephyrproject-rtos- name: your-git-serverurl-base: https://git.example.com/your-companydefaults:remote: your-git-serverprojects:- name: zephyrremote: zephyrproject-rtosrevision: v2.5.0import: true- name: app1revision: SOME_SHA_OR_BRANCH_OR_TAG- name: app2revision: ANOTHER_SHA_OR_BRANCH_OR_TAGself:path: manifest-repo
