有时我们想把一个驱动编译为模块形式,在kernel的config配置为m编译是报
***配置项 creates inconsistent choice state 编译后发现驱动并没有被编译,检查kernel下的.config并没有该配置项
就以CONFIG_USB_G_WEBCAM为例,单独将CONFIG_USB_G_WEBCAM配置为m就报 USB_G_WEBCAM creates inconsistent choice state的警告。
出现这个问题的原因是Kconfig中有一组配置项被choice 和endchoice 包裹,这里面的配置项必须都配置为m或y,不一致就会报这个错。将USB_G_WEBCAM 在内choice 包裹的全选择m即可。
choice 语句将多个类似的配置选项组合在一起,供用户选择一组配置项
通过make menuconfig配置的话就可以发现单独配置USB_G_WEBCAM是不可以的,必须整体配置USB GADGET Drivers为m才可以
配置USB Gadget Drivers为m后,才可以配置webcam为m
配置后体现在.config对比如下
当然,实际上想单独配置WEBCAM编译为模块,直接修改Makefile CONFIG_USB_G_WEBCAM为m就可以了
参考:https://www.rt-thread.org/document/site/programming-manual/kconfig/kconfig/