说明
本文解释下面路径的 BUILD.gn 文件各部分
\applications\sample\wifi-iot\app\BUILD.gn
内容如下:
import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
features = [
"code_v2.0/std_03:hello_demo",
]
}
整体作用
这个BUILD.gn文件是OpenHarmony轻量系统(如Hi3861开发板)中用于 管理应用组件集合 的配置文件
核心作用:指定哪些功能模块需要被 编译并集成到最终固件中
1. import("//build/lite/config/component/lite_component.gni")
作用:导入OpenHarmony轻量系统提供的“组件模板”(lite_component.gni)。
这个模板封装了轻量系统中“组件定义”的通用规则,允许开发者通过
lite_component关键字快速定义一个可被系统识别的组件,无需手动编写复杂的构建逻辑。路径
//表示OpenHarmony源码的根目录,build/lite/config/component/是系统内置构建配置的固定路径。
2. lite_component("app") { ... }
lite_component:这是从上面导入的模板中提供的关键字,用于定义一个“轻量系统组件”(适用于Hi3861等资源受限设备)。
"app":当前组件的名称(可自定义,通常表示“应用程序集合”),构建系统会通过这个名称识别该组件。- 大括号
{ ... }内是组件的具体配置,核心字段是features。
3. features = [ ... ]
- 作用:指定当前组件(
"app")包含哪些“子功能模块”,这些模块会被构建系统编译并最终打包到固件中。 - 列表中的每一项是一个“模块路径”,格式为:
"相对路径或绝对路径:模块名",表示“引入指定路径下的某个模块”。
总结:
它是一个“组件清单”,通过features列表决定哪些应用模块(如MQTT demo、OLED demo等)会被包含在最终的固件中。开发者可以通过注释/取消注释列表中的项,快速切换需要编译的功能(无需修改模块源码,只需调整配置),这在多功能测试或版本裁剪时非常方便。
例如,当前配置仅启用了code_v2.0/std_20mqqt目录下的ems模块,其他模块(如LED、WiFi、OLED相关)均被注释,因此构建时只会编译ems模块对应的功能。