|
| 1 | +# RT-Thread 构建系统文档 |
| 2 | + |
| 3 | +欢迎使用RT-Thread构建系统文档。本文档集详细介绍了RT-Thread基于SCons的构建系统的使用方法和技术原理。 |
| 4 | + |
| 5 | +## 文档目录 |
| 6 | + |
| 7 | +### 📚 用户指南 |
| 8 | + |
| 9 | +1. **[构建系统使用指南](构建系统使用指南.md)** |
| 10 | + - 快速开始 |
| 11 | + - 命令行选项详解 |
| 12 | + - 工具链配置 |
| 13 | + - 项目生成 |
| 14 | + - 软件包管理 |
| 15 | + - 高级功能 |
| 16 | + - 常见问题解答 |
| 17 | + |
| 18 | +2. **[SConscript编写指南](SConscript编写指南.md)** |
| 19 | + - 基础语法 |
| 20 | + - 常用模式 |
| 21 | + - 高级技巧 |
| 22 | + - 最佳实践 |
| 23 | + - 示例集合 |
| 24 | + |
| 25 | +### 🔧 技术文档 |
| 26 | + |
| 27 | +3. **[构建系统技术原理](构建系统技术原理.md)** |
| 28 | + - 系统架构设计 |
| 29 | + - 核心模块分析 |
| 30 | + - 构建流程详解 |
| 31 | + - 依赖管理机制 |
| 32 | + - 工具链适配层 |
| 33 | + - 项目生成器架构 |
| 34 | + - 扩展机制 |
| 35 | + |
| 36 | +## 快速导航 |
| 37 | + |
| 38 | +### 常用命令 |
| 39 | + |
| 40 | +```bash |
| 41 | +# 基础编译 |
| 42 | +scons # 默认编译 |
| 43 | +scons -j8 # 8线程并行编译 |
| 44 | +scons -c # 清理编译产物 |
| 45 | + |
| 46 | +# 配置管理 |
| 47 | +menuconfig # 图形化配置 |
| 48 | +scons --pyconfig # Python脚本配置 |
| 49 | + |
| 50 | +# 项目生成 |
| 51 | +scons --target=mdk5 # 生成Keil MDK5项目 |
| 52 | +scons --target=iar # 生成IAR项目 |
| 53 | +scons --target=vsc # 生成VS Code项目 |
| 54 | +scons --target=cmake # 生成CMake项目 |
| 55 | + |
| 56 | +# 软件包管理 |
| 57 | +pkgs --update # 更新软件包 |
| 58 | +pkgs --list # 列出已安装包 |
| 59 | +``` |
| 60 | + |
| 61 | +### 核心概念 |
| 62 | + |
| 63 | +- **SConstruct**: BSP根目录的主构建脚本 |
| 64 | +- **SConscript**: 各个组件/目录的构建脚本 |
| 65 | +- **rtconfig.py**: 工具链和平台配置 |
| 66 | +- **rtconfig.h**: RT-Thread功能配置 |
| 67 | +- **DefineGroup**: 定义组件的核心函数 |
| 68 | +- **GetDepend**: 检查依赖的核心函数 |
| 69 | + |
| 70 | +## 构建系统架构图 |
| 71 | + |
| 72 | +``` |
| 73 | +┌─────────────────────────────────────┐ |
| 74 | +│ 用户命令 (scons) │ |
| 75 | +└──────────────┬──────────────────────┘ |
| 76 | + │ |
| 77 | +┌──────────────▼──────────────────────┐ |
| 78 | +│ SConstruct (主脚本) │ |
| 79 | +│ ┌─────────────────────┐ │ |
| 80 | +│ │ PrepareBuilding() │ │ |
| 81 | +│ │ 环境初始化 │ │ |
| 82 | +│ └──────────┬──────────┘ │ |
| 83 | +└────────────────┼───────────────────┘ |
| 84 | + │ |
| 85 | +┌────────────────▼────────────────────┐ |
| 86 | +│ building.py │ |
| 87 | +│ ┌──────────┬──────────┐ │ |
| 88 | +│ │ 组件收集 │ 依赖处理 │ │ |
| 89 | +│ └──────────┴──────────┘ │ |
| 90 | +└─────────────────────────────────────┘ |
| 91 | + │ |
| 92 | + ┌────────┴────────┐ |
| 93 | + │ │ |
| 94 | +┌───────▼──────┐ ┌────────▼────────┐ |
| 95 | +│ SConscript │ │ rtconfig.h │ |
| 96 | +│ 组件脚本 │ │ 功能配置 │ |
| 97 | +└──────────────┘ └─────────────────┘ |
| 98 | +``` |
| 99 | + |
| 100 | +## 主要特性 |
| 101 | + |
| 102 | +✅ **多工具链支持** |
| 103 | +- GCC (ARM/RISC-V/x86) |
| 104 | +- Keil MDK (ARMCC/ARMClang) |
| 105 | +- IAR |
| 106 | +- Visual Studio |
| 107 | + |
| 108 | +✅ **灵活的配置系统** |
| 109 | +- Kconfig图形配置 |
| 110 | +- 条件编译支持 |
| 111 | +- 本地编译选项 |
| 112 | + |
| 113 | +✅ **丰富的项目生成器** |
| 114 | +- IDE项目文件生成 |
| 115 | +- CMake支持 |
| 116 | +- Makefile生成 |
| 117 | +- VS Code配置 |
| 118 | + |
| 119 | +✅ **模块化设计** |
| 120 | +- 组件独立构建 |
| 121 | +- 清晰的依赖管理 |
| 122 | +- 可扩展架构 |
| 123 | + |
| 124 | +## 开发工作流 |
| 125 | + |
| 126 | +```mermaid |
| 127 | +graph LR |
| 128 | + A[配置系统] --> B[编写代码] |
| 129 | + B --> C[构建项目] |
| 130 | + C --> D[调试运行] |
| 131 | + D --> E{是否完成?} |
| 132 | + E -->|否| B |
| 133 | + E -->|是| F[发布] |
| 134 | + |
| 135 | + A1[menuconfig] -.-> A |
| 136 | + C1[scons] -.-> C |
| 137 | + C2[IDE项目] -.-> C |
| 138 | +``` |
| 139 | + |
| 140 | +## 相关链接 |
| 141 | + |
| 142 | +- [RT-Thread官网](https://www.rt-thread.org) |
| 143 | +- [RT-Thread GitHub](https://github.com/RT-Thread/rt-thread) |
| 144 | +- [SCons官方文档](https://scons.org/documentation.html) |
| 145 | + |
| 146 | +## 贡献指南 |
| 147 | + |
| 148 | +如果您发现文档中的错误或有改进建议,欢迎: |
| 149 | + |
| 150 | +1. 在GitHub上提交Issue |
| 151 | +2. 提交Pull Request |
| 152 | +3. 在RT-Thread社区论坛反馈 |
| 153 | + |
| 154 | +## 版本信息 |
| 155 | + |
| 156 | +- 文档版本:1.0.0 |
| 157 | +- 更新日期:2024-01 |
| 158 | +- 适用版本:RT-Thread 4.1.0+ |
| 159 | + |
| 160 | +--- |
| 161 | + |
| 162 | +**注意**:本文档基于RT-Thread最新版本编写,部分功能可能需要特定版本支持。使用前请确认您的RT-Thread版本。 |
0 commit comments