.. _doc_dev_dir: 基本信息 ======== 1. 目录结构 ----------- :: ucs ├── appBaseLibs # 应用框架基础库主目录 ├── appExtension # 应用中可用于界面中配置加载的 QT UI 扩展库主目录 ├── appFramework # 应用主功能业务逻辑框架插件主目录 ├── appTest # 应用测试插件主目录 ├── buildchain # 应用框架编译链主目录 ├── cmake # cmake自定义函数模块目录 ├── config # 应用框架编译配置文件目录 ├── deploy # 应用部署文件目录 ├── deps # 应用框架编译及运行时依赖库目录 ├── doc # 文档目录 └── README.md # README.md文件 为了方便代码编译和管理, UCS对源码工程目录进行了一定的规划和设计. 如上所示. - appBaseLibs 存放本项目中开发的公共基础库, 比如在多个插件中都可以用到的eaEvent库. 其编译后的库和头文件需要安装到 **./deps/workspace/install** 目录下, 可以供其他插件编译和运行时依赖. - appExtension 存放本项目中开发的QT UI扩展库, 编译后生成的库文件需要安装到 **./deploy/bin/app/models** 目录下, 供QT插件框架加载. - appFramework 应用的各类主要功能和业务逻辑插件目录, 编译后需要对生成的插件库及其他指定资源通过bundle打包处理, 并将打包后的插件安装到 **./deploy/bin/app/bundles** 目录. 应用运行时会自动将 **bundles** 目录下的插件提取到 **./deploy/bin/app/codeCache** 缓存目录中进行加载. - appTest 应用测试插件目录, 编译后需要对生成的插件库及其他指定资源通过bundle打包处理, 并将打包后的插件安装到 **./deploy/bin/app/devbundles** 目录. 应用运行时会自动将 **devbundles** 目录下的插件提取到 **./deploy/bin/app/codeCache** 缓存目录中进行加载. - buildchain UCS编译工具使用的是cmake, buildchain目录下存放不同平台下的cmake的编译工具链配置. - cmake 存放一些自定义的cmake函数模块等. - config 存放一些不同平台下的环境配置文件,如 **Qt5DIR** 主目录配置等. - deploy 应用的部署目录, 包括各类插件、配置文件、资源文件、运行脚本、日志文件等. - deps 应用框架编译及运行时依赖库目录. 其中 - framework目录存放OSP等框架依赖库, 以及bundle打包工具等; - thridparty目录存放第三方开源库依赖库; - workspace目录存放UCS项目中开发的依赖库. - doc 文档目录. ```` 2. 编译系统 ----------- **UCS** 编译系统使用的是 **cmake** , 为了方便每个插件或库都可以单独进行编译和打包, 每个插件或库都是独立的一个cmake工程, 并单独编写了cmake工程文件(CMakeLists.txt)、编译脚本(make.sh)以及打包脚本(bundle.sh). 同时也编写了统一的顶层编译脚本(make.sh), 方便统一编译和打包. 在appBaseLibs、appExtension、appFramework、appTest目录下均提供了统一编译脚本(make.sh)以及清理脚本(clean.sh). ```` 3. 开发说明 ----------- 在目前的功能和业务架构基础上, **UCS** 的开发类型大致可分为以下三类: - 公共库, 作为其他库或插件的依赖. - OSP插件, 实现应用的某项功能或业务的独立模块, 可与其他插件进行服务调用和通信, 由OSP插件框架统一加载、启动、停止和卸载, 管理其生命周期. - QT插件库, 用于底盘、上桩等不同业务逻辑的定制, 可根据xml配置进行加载显示. 可根据具体业务需要, 选择合适的开发类型进行开发. 选定开发类型后可参考对应类型主目录下的样例工程, 进行项目的创建和开发, 目录分布如下: - 公共库, 位于 appBaseLibs 目录. - OSP插件, 位于 appFramework 和 appTest 目录. - QT插件库, 位于 appExtension 目录.