1# 编译构建Kconfig可视化配置指导 2 3## 概述 4 5### 功能简介 6该功能基于[Kconfiglib](https://github.com/ulfalizer/Kconfiglib)与[Kconfig]( https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html#introduction)实现,方便用户个性化配置OpenHarmony产品子系统部件。 7 8基于Kconfig实现的可视化配置功能具有以下优点: 9 10- 能直观且全面地展示软件的部件选项。 11- 可靠性强,如Linux-kernel、buildroot等知名软件都采用Kconfig进行可视化配置。 12 13### 基本概念 14 15- [Kconfig]( https://www.kernel.org/doc/html/latest/kbuild/kconfig-language.html#introduction) :是一款Linux可视化配置文件格式。 16 17- [Kconfiglib](https://github.com/ulfalizer/Kconfiglib):是一款基于Kconfig格式实现的Linux可视化配置工具。 18 19### 相关模块 20 21- [Kconfig更新模块](https://gitee.com/openharmony/build/blob/master/tools/component_tools/generate_kconfig.py):用于更新Kconfig菜单栏目最新的部件信息列表。 22 23- [config配置格式转换](https://gitee.com/openharmony/build/blob/master/tools/component_tools/parse_kconf.py):用于将界面生成的config文件,转化为系统编译构建的标准化格式配置文件。 24 25## 操作指导 26 271. 获取源码 28 29 OpenHarmony版本发布的源码获取请参考:[源码获取教程](../get-code/sourcecode-acquire.md) 30 312. 环境准备 32 33 环境配置所需要的Kconfiglib已内置在OpenHarmony自带的hb工具中,如需安装hb工具,可参考:[hb安装教程](../quick-start/quickstart-pkg-install-tool.md#安装hb) 34 353. 开启可视化配置界面 36 37 ```shell 38 #进入build仓下目录 39 cd build/tools/component_tools 40 menuconfig kconfig 41 ``` 42 43 ![界面示例](figures/kconfig界面.PNG) 44 454. 参数填写 46 47 参数配置项可以参考:[productdefine/common/base/base_product.json](https://gitee.com/openharmony/productdefine_common/blob/master/base/base_product.json) 48 49 ![参数填写](figures/kconfig参数输入.gif) 50 515. 选择部件并配置 52 53 1. 点击方向键->选择子系统,进入子系统的部件列表。 54 55 2. 按回车健选择子系统。 56 57 3. 输入`feature`时,注意用英语逗号隔开多项输入。 58 59 ![部件选择](figures/kconfig部件选择.gif) 60 616. 保存所选配置 62 63 按S键保存文件,可自定义输出文件名,默认为当前目录下`.config`文件。 64 65 ![保存配置](figures/kconfig保存.PNG) 66 677. 生成OpenHarmony Style配置文件 68 69 示例步骤: 70 71 1. gn编译全量产品 72 73 ```shell 74 cp productdefine/common/base/base_product.json productdefine/common/products/ohos-arm64.json 75 ./build.sh --product-name ohos-arm64 --build-only-gn --ccache --gn-args pycache_enable=true --gn-args check_deps=true --build-only-gn 76 ``` 77 78 2. 生成部件依赖文件 79 80 ```shell 81 ./build/tools/module_dependence/part_deps.py --deps-files-path out/arm64/deps_files 82 # output: out/arm64/part_deps_info/part_deps_info.json 83 ``` 84 85 3. 生成OpenHarmony Style配置文件 86 87 ```shell 88 cd build/tools/component_tools 89 python3 parse_kconf.py --deps=/path/to/out/arm64/part_deps_info/part_deps_info.json 90 ``` 91 92 输出文件默认为当前目录下:`product.json`, 也可以使用`python3 parse_kconf.py --out="example/out.json"`来指定输出文件位置 93 94 更多操作可查看`python3 parse_kconf.py -h` 95 96 97 98## 常见问题 99 100### 菜单列表缺失最新部件信息 101 102由于产品不断的更新迭代,全量部件列表[productdefine/common/base/base_product.json](https://gitee.com/openharmony/productdefine_common/blob/master/base/base_product.json)也会随之不断更新,从而导致Kconfig菜单缺少最新部件。 103 104解决办法: 105 106更新[Kconfig文件](https://gitee.com/openharmony/build/blob/master/tools/component_tools/kconfig) 107 108```shell 109cd build/tools/component_tools 110python3 generate_kconfig.py 111``` 112 113更多选项通过`python3 generate_kconfig.py -h`查看。 114 115