ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题

        最近在学习esp32,使用VSCODE进行开发。今天在添加自己的项目文件,编译后,系统提示找不到头文件,找了很久,最终在大佬同事的帮助下才解决,这里记录一下。

情况一(在components文件下添加)

先上报错图片。

        就只在官方的DEMO文件里添加了另外一层文件,就出现这个问题。只多了一层“drv”文件夹,如果不要drv文件夹,把uart移动到components下后编译也是正常的。所以出问题肯定是因为makefile出了问题,无法链接编译到需要的文件夹。

这里使用两种方法进行解决。

        第一种:

        修改工程最外层的makefile和cmakelists.txt连个文件。添加如下代码

        这几句的意思就是让编译器在编译的时候去这几个文件夹下查找需要的文件。

        在project.cmake文件里有对目录的解释

        大概意思就是让编译器在这个目录下进行查找。(具体语句我也不是很清楚,惭愧)

        添加之后编译就可以通过了。

        第二种:

        编译器之所以链接不到,是因为编译器只能检测到components文件夹的第一层子目录下,就是drv文件夹,该文件夹的子目录不会去链接,因为没有cmakelists.txt文件。所以第二种方式就是在drv文件夹下创建cmakelists.txt文件.

        在该文件夹下添加包含的文件,

        这样编译器就能在这里找到drv_uart.c文件了。

        PS:如果采用第一种方法,drv下的cmakelists.txt必须删除掉,否则会报错。语句注释掉也不行。

        个人建议还是用第一种方法,更正规一点。但是说到底都是编译器没有链接到文件,还是自己学艺不精。

        这里要感谢一下同事大佬,感谢文哥。

对了。这个问题并不是很多人说的什么路径问题,我的c_cpp_properties.json文件没有改动。

情况二(在非components文件夹下添加)

        比如我们在IDF提供的,hello_world文件夹下添加一个drv文件。这里我们把hello_world文件夹拷贝为test_project工程。在main的同级目录下创建一个drv目录,在该目录下添加文件。此时编译,发现找不到我们的需要的文件。

        

         此时,在main文件夹下的component.mk文件中,添加如下代码:

COMPONENT_ADD_INCLUDEDIRS := . ../drv
COMPONENT_SRCDIRS		  := . ../drv

        这样就能让编译连链接到drv目录下。此时再make 。不会报错。

  • 22
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
在Visual Studio Code中展示ESP-IDF示例项目时,如果头文件变红,通常是由于路径配置不正确或者缺少必要的依赖库导致的。为了解决这个问题,你可以按照以下步骤进行操作: 1. 首先,确认你已经安装了Espressif IDF插件。如果没有安装,请按照引用中的步骤进行安装。 2. 确保你已经配置了ESP-IDF插件。你可以按照引用中的步骤进行配置。 3. 检查你的项目路径是否正确设置。在Visual Studio Code中,你可以通过点击左侧的资源管理器图标来查看项目结构。确保你的项目中包含了正确的ESP-IDF示例项目文件夹。 4. 如果头文件变红,说明可能缺少了必要的依赖库。你可以尝试在项目文件夹中打开终端,并运行`idf.py build`命令来编译项目。编译过程中会自动下载并安装缺失的依赖库。 5. 如果上述步骤都无法解决问题,你可以尝试重新安装ESP-IDF插件。在Visual Studio Code中,点击扩展按钮,搜索并重新安装ESP-IDF插件。 总结起来,如果在Visual Studio Code中展示ESP-IDF示例项目时头文件变红,你可以通过确认安装了Espressif IDF插件、正确配置了ESP-IDF插件、检查项目路径和重新安装插件等步骤来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [ESP32-C3 入门篇(二)使用VS Code进行开发](https://blog.csdn.net/z345695415/article/details/124544463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ESP-IDF/VSCode安装和使用ESP32开发环境)](https://blog.csdn.net/luhanhua/article/details/131028184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值