Kconfig的工作方式
Kconfig的工作步骤
1)读取当前目录下的.config文件(没有的话则按照Kconfig文件默认配置)
2)根据.config的内容,显示相应的界面
3)程序员通过界面选中本单板将要参与构建的组件
4)退出Kconfig界面,会保存两个文件:.config、autoconf.h
Kconfig文件:

Kconfig文件运行后界面:使用者来选择(*代表选择)

生成的.config文件(该文件既可以用来初始化Kconfig界面,也可以保存为不同硬件的配置文件。通过不同的配置文件来替代复杂的if else)

Kbuild文件:将选择的文件进行包含和排除

当选择I2C_A, 最终的obj-y = i2c_a_hardware.o 这个就是编译脚本的输入。
autoconf.h (根据Kconfig的选择结果生成,可以作为方法1的宏定义文件)

Kconfig的python实现代码可以参考:
github 项目ulfalizer/Kconfiglib
该库的使用:
https://blog.csdn.net/u010018991/article/details/81867316