发现问题
开发ESP32的时候,当我使用多个组件的时候,编译的时候出现两个问题
-
- Task/Task_Gui.c:13: undefined reference to `lvgl_driver_init’
-
- However, the component manager is not enabled
解决问题1
但是我去找这个文件的时候,发现, lvgl_driver_init();这个函数是17行的
我检查了CMakeLists.txt文件,发现一切配置没有任何问题。
**解决办法:**对比别人的工程发现,在根目录下的CMakeLists.txt文件中有一行,添加到我的文件中就可以了。
set(__PROJECT_GROUP_LINK_COMPONENTS ON)
问了chatGPT,这是原话
当你设置 set(__PROJECT_GROUP_LINK_COMPONENTS ON):
链接行为改变:这可能改变了组件之间的链接行为。在某些情况下,如果没有正确链接相关的组件,可能会出现找不到引用的函数或变量的情况。这个设置可能启用了一种机制,使得组件之间更容易或以不同的方式链接。
内部变量:由于这个变量的名称以双下划线 (__) 开头,它看起来像是一个内部使用的变量。这意味着它可能不是为最终用户设计的,而是 ESP-IDF 内部使用的。因此,它可能会影响构建系统的某些内部行为。
解决特定问题:在你的情况下,使用这个设置可能解决了组件管理器的警告问题,这表明它以某种方式影响了组件的发现或链接过程。
解决问题2
在**.vscode\settings.json**文件夹添加
"idf.enableIdfComponentManager": true,