深入解析 OpenHarmony 构建系统-2-目录结构与核心组件

引言

OpenHarmony作为一款面向全场景的分布式操作系统,其构建系统在开发过程中扮演着至关重要的角色。本文将详细介绍OpenHarmony构建系统的目录结构和核心组件,帮助开发者更好地理解和使用这一强大的工具。

目录结构概览

以下是OpenHarmony构建系统的目录结构,每个目录和文件的作用将在下文中详细解释:

/mnt/w2/sxc/SDK/OHOS-4.0-Release/build/hb
├── build
│   ├── bdist.linux-x86_64
│   └── lib
│       └── hb
│           └── __main__.py
├── containers
│   ├── arg.py
│   ├── colors.py
│   └── status.py
├── exceptions
│   └── ohos_exception.py
├── hb
│   └── __main__.py
├── helper
│   ├── noInstance.py
│   ├── separator.py
│   └── singleton.py
├── main.py
├── modules
│   ├── interface
│   │   ├── build_module_interface.py
│   │   ├── clean_module_interface.py
│   │   ├── env_module_interface.py
│   │   ├── module_interface.py
│   │   ├── set_module_interface.py
│   │   └── tool_module_interface.py
│   ├── ohos_build_module.py
│   ├── ohos_clean_module.py
│   ├── ohos_env_module.py
│   ├── ohos_set_module.py
│   └── ohos_tool_module.py
├── ohos_build.egg-info
│   ├── dependency_links.txt
│   ├── entry_points.txt
│   ├── PKG-INFO
│   ├── requires.txt
│   ├── SOURCES.txt
│   └── top_level.txt
├── README.md
├── README_zh.md
├── resolver
│   ├── args_factory.py
│   ├── build_args_resolver.py
│   ├── clean_args_resolver.py
│   ├── env_args_resolver.py
│   ├── interface
│   │   └── args_resolver_interface.py
│   ├── set_args_resolver.py
│   └── tool_args_resolver.py
├── resources
│   ├── args
│   │   └── default
│   │       ├── buildargs.json
│   │       ├── cleanargs.json
│   │       ├── envargs.json
│   │       ├── setargs.json
│   │       └── toolargs.json
│   ├── build_tools
│   │   └── build_tools_config.json
│   ├── config
│   │   └── config.json
│   ├── config.py
│   ├── global_var.py
│   └── status
│       └── status.json
├── services
│   ├── gn.py
│   ├── interface
│   │   ├── build_executor_interface.py
│   │   ├── build_file_generator_interface.py
│   │   ├── load_interface.py
│   │   ├── menu_interface.py
│   │   ├── preload_interface.py
│   │   └── service_interface.py
│   ├── loader.py
│   ├── menu.py
│   ├── ninja.py
│   └── preloader.py
├── setup.py
├── test
│   └── unitTest
│       └── services
│           ├── loader_test.py
│           ├── preloader_test.py
│           └── test.py
└── util
    ├── component_util.py
    ├── device_util.py
    ├── io_util.py
    ├── loader
    │   ├── build_gn.template
    │   ├── generate_targets_gn.py
    │   ├── load_bundle_file.py
    │   ├── load_ohos_build.py
    │   ├── merge_platform_build.py
    │   ├── platforms_loader.py
    │   ├── subsystem_info.py
    │   ├── subsystem_scan.py
    │   └── toolchain_template
    │       ├── ohos_arm64_clang.template
    │       └── ohos_arm_clang.template
    ├── log_util.py
    ├── post_build
    │   └── part_rom_statistics.py
    ├── preloader
    │   ├── parse_lite_subsystems_config.py
    │   ├── parse_vendor_product_config.py
    │   └── preloader_process_data.py
    ├── product_util.py
    ├── system_util.py
    └── type_check_util.py
目录结构详解
  1. build

    • bdist.linux-x86_64: 包含构建系统在Linux x86_64架构下的二进制文件。
    • lib: 包含构建系统的库文件。
      • hb/__main__.py: 构建系统的主入口文件。
  2. containers

    • arg.py: 定义参数容器类,用于管理构建过程中的参数。
    • colors.py: 提供颜色编码,用于控制台输出的美化。
    • status.py: 定义状态管理类,用于记录和管理构建过程的状态。
  3. exceptions

    • ohos_exception.py: 定义异常类,用于处理构建过程中可能出现的各种错误。
  4. hb

    • __main__.py: 构建系统的主入口文件,负责启动构建过程。
  5. helper

    • noInstance.py: 防止单例模式类的多实例化。
    • separator.py: 提供分隔符生成器,用于控制台输出的分隔。
    • singleton.py: 实现单例模式,确保某些类在整个应用中只有一个实例。
  6. main.py

    • 入口文件,启动构建系统。
  7. modules

    • interface: 定义各个模块的接口。
      • build_module_interface.py: 构建模块的接口。
      • clean_module_interface.py: 清理模块的接口。
      • env_module_interface.py: 环境模块的接口。
      • module_interface.py: 模块的通用接口。
      • set_module_interface.py: 设置模块的接口。
      • tool_module_interface.py: 工具模块的接口。
    • ohos_build_module.py: 实现构建模块的具体逻辑。
    • ohos_clean_module.py: 实现清理模块的具体逻辑。
    • ohos_env_module.py: 实现环境模块的具体逻辑。
    • ohos_set_module.py: 实现设置模块的具体逻辑。
    • ohos_tool_module.py: 实现工具模块的具体逻辑。
  8. ohos_build.egg-info

    • 包含构建系统的元数据信息,用于打包和发布。
      • dependency_links.txt: 依赖链接文件。
      • entry_points.txt: 入口点文件。
      • PKG-INFO: 包信息文件。
      • requires.txt: 依赖项文件。
      • SOURCES.txt: 源代码文件列表。
      • top_level.txt: 顶级包列表。
  9. README.md

    • 英文版的项目说明文档。
  10. README_zh.md

    • 中文版的项目说明文档。
  11. resolver

    • args_factory.py: 参数工厂类,用于创建和管理参数。
    • build_args_resolver.py: 构建参数解析器。
    • clean_args_resolver.py: 清理参数解析器。
    • env_args_resolver.py: 环境参数解析器。
    • interface/args_resolver_interface.py: 参数解析器的接口。
    • set_args_resolver.py: 设置参数解析器。
    • tool_args_resolver.py: 工具参数解析器。
  12. resources

    • args/default: 默认参数文件。
      • buildargs.json: 构建参数的默认配置。
      • cleanargs.json: 清理参数的默认配置。
      • envargs.json: 环境参数的默认配置。
      • setargs.json: 设置参数的默认配置。
      • toolargs.json: 工具参数的默认配置。
    • build_tools: 构建工具配置。
      • build_tools_config.json: 构建工具的配置文件。
    • config: 配置文件。
      • config.json: 主配置文件。
    • config.py: 配置管理类。
    • global_var.py: 全局变量定义。
    • status/status.json: 状态文件,记录构建过程的状态。
  13. services

    • gn.py: GN构建工具的接口实现。
    • interface: 定义服务接口。
      • build_executor_interface.py: 构建执行器接口。
      • build_file_generator_interface.py: 构建文件生成器接口。
      • load_interface.py: 加载接口。
      • menu_interface.py: 菜单接口。
      • preload_interface.py: 预加载接口。
      • service_interface.py: 服务接口。
    • loader.py: 加载器类,负责加载构建所需的资源。
    • menu.py: 菜单管理类,提供用户交互界面。
    • ninja.py: Ninja构建工具的接口实现。
    • preloader.py: 预加载器类,负责预加载构建所需的资源。
  14. setup.py

    • 项目安装脚本,用于打包和安装构建系统。
  15. test/unitTest/services

    • loader_test.py: 加载器的单元测试。
    • preloader_test.py: 预加载器的单元测试。
    • test.py: 通用测试脚本。
  16. util

    • component_util.py: 组件管理工具。
    • device_util.py: 设备管理工具。
    • io_util.py: 输入输出工具。
    • loader/build_gn.template: GN构建文件模板。
    • loader/generate_targets_gn.py: 生成目标GN文件的脚本。
    • loader/load_bundle_file.py: 加载Bundle文件的脚本。
    • loader/load_ohos_build.py: 加载OHOS构建文件的脚本。
    • loader/merge_platform_build.py: 合并平台构建文件的脚本。
    • loader/platforms_loader.py: 平台加载器。
    • loader/subsystem_info.py: 子系统信息管理。
    • loader/subsystem_scan.py: 子系统扫描工具。
    • loader/toolchain_template/ohos_arm64_clang.template: ARM64架构的Clang工具链模板。
    • loader/toolchain_template/ohos_arm_clang.template: ARM架构的Clang工具链模板。
    • log_util.py: 日志管理工具。
    • post_build/part_rom_statistics.py: 构建后ROM统计工具。
    • preloader/parse_lite_subsystems_config.py: 解析轻量级子系统配置。
    • preloader/parse_vendor_product_config.py: 解析厂商产品配置。
    • preloader/preloader_process_data.py: 预加载数据处理。
    • product_util.py: 产品管理工具。
    • system_util.py: 系统管理工具。
    • type_check_util.py: 类型检查工具。
结论

通过上述解析,我们可以清晰地看到OpenHarmony构建系统的目录结构和各个文件的作用。这一结构不仅保证了构建过程的高效性和可靠性,还为开发者提供了丰富的工具和接口,使得开发和维护变得更加便捷。希望本文能为对OpenHarmony构建系统感兴趣的开发者提供有价值的参考。如果您有任何疑问或建议,欢迎在评论区留言交流。

流行的深度学习框架包括: 1. TensorFlow:谷歌开发的深度学习框架,支持分布式计算,能够高效地进行大规模的机器学习任务。优点是支持多种编程语言,包括Python、C++、Java等,开源,可广泛应用于各种领域。缺点是学习曲线较陡峭,对于初学者有一定的门槛。开源地址:https://github.com/tensorflow/tensorflow 2. PyTorch:Facebook开源的深度学习框架,易于使用、快速、灵活。优点是提供了直观的调试工具,支持动态图,方便进行模型调整和优化。缺点是不如TensorFlow在分布式计算和移动端支持方面成熟。开源地址:https://github.com/pytorch/pytorch 3. Keras:基于Python的深度学习库,可以运行于TensorFlow、Theano和CNTK等后端。优点是易于上手、高度模块化,可以快速搭建复杂的深度学习模型。缺点是灵活性相对较弱,不够适用于一些研究性的工作。开源地址:https://github.com/keras-team/keras 4. Caffe:由加州大学伯克利分校开发的深度学习框架,可用于图像分类、物体检测、语义分割等任务。优点是速度快、效果好、易于扩展。缺点是不够灵活,不适合做一些需要较高自定义程度的工作。开源地址:https://github.com/BVLC/caffe 5. MXNet:亚马逊开发的深度学习框架,支持分布式计算,具有高度的可扩展性和灵活性。优点是速度快、支持多种编程语言,可以其他框架兼容。缺点是文档不够完善,对于初学者学习难度较大。开源地址:https://github.com/apache/incubator-mxnet 以上框架均为开源,开源地址分别为上述内容中的链接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值