RT-Thread支持使用package.json来定义组件的构建配置,作为传统SConscript的简化替代方案。
{
"name": "hello",
"description": "Hello World component for RT-Thread",
"type": "rt-thread-component",
"dependencies": ["RT_USING_HELLO"],
"defines": [],
"sources": [{
"name": "src",
"dependencies": [],
"includes": ["."],
"files": ["hello.c"]
}]
}
方式一:使用PackageSConscript(推荐)
from building import *
objs = PackageSConscript('package.json')
Return('objs')
方式二:直接调用BuildPackage
Import('env')
from package import BuildPackage
objs = BuildPackage('package.json')
Return('objs')
mycomponent/
├── SConscript
├── package.json
├── mycomponent.c
├── mycomponent.h
└── src/
└── helper.c
package.json:
{
"name": "mycomponent",
"description": "My RT-Thread component",
"type": "rt-thread-component",
"dependencies": ["RT_USING_MYCOMPONENT"],
"defines": ["MY_VERSION=1"],
"sources": [
{
"name": "main",
"dependencies": [],
"includes": ["."],
"files": ["mycomponent.c"]
},
{
"name": "helper",
"dependencies": ["RT_USING_MYCOMPONENT_HELPER"],
"includes": ["src"],
"files": ["src/*.c"]
}
]
}
| 特性 | package.json | DefineGroup |
|---|---|---|
| 配置方式 | JSON文件 | Python代码 |
| 依赖管理 | 结构化 | 函数参数 |
| 源文件组织 | 分组管理 | 单一列表 |
| 条件编译 | 源组级别 | 整体级别 |
| 灵活性 | 中等 | 高 |
| 易用性 | 高 | 中等 |