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-rtos
url-base: https://github.com/zephyrproject-rtos
projects:
- name: zephyr
remote: zephyrproject-rtos
revision: v2.5.0
import: true
self:
path: application
如果您以这种方式使用,您仍然可以选择性地”覆盖”单个Zephyr模块。
将zephyr/west.yml
里面的内容复制到application/west.yml
中。
manifest:
remotes:
- name: zephyrproject-rtos
url-base: https://github.com/zephyrproject-rtos
defaults:
remote: zephyrproject-rtos
projects:
- name: zephyr
revision: v2.5.0
west-commands: scripts/west-commands.yml
- name: net-tools
revision: some-sha-goes-here
path: tools/net-tools
# ... other Zephyr modules go here ...
self:
path: application
T3: 森林拓扑, 独立的主存储库清单
- 适用于那些支持多个独立应用程序没有
中央
存储库的开发。 - 专用的清单存储库,其中不包含 Zephyr 源代码,并指定了所有处于同一
级别
的项目列表 - 与现有机制的类比:基于谷歌的源码分布
使用此拓扑的工作空间看起来像这样:manifest-repo/west.yml
的内容如下:
manifest:
remotes:
- name: zephyrproject-rtos
url-base: https://github.com/zephyrproject-rtos
- name: your-git-server
url-base: https://git.example.com/your-company
defaults:
remote: your-git-server
projects:
- name: zephyr
remote: zephyrproject-rtos
revision: v2.5.0
import: true
- name: app1
revision: SOME_SHA_OR_BRANCH_OR_TAG
- name: app2
revision: ANOTHER_SHA_OR_BRANCH_OR_TAG
self:
path: manifest-repo