0·ESP IDF搭建VScode环境踩坑记(找不到头文件)

目录

环境搭建

简单记录下自己遇到的问题:

①找不到头文件

②Cmake插件出现问题

小结

环境搭建

整体的环境搭建,网络上还是有很多教程的,这里就不重复造轮子了,可以参考下面的链接

【ESP32-IDF环境搭建之vscode环境】

官方也有出一个指导教程,可以作为辅助参考,基本还是比较顺畅的

快速入门 ESP编程指南

我选择的是ESP IDF + VScode,具体环境也可以用 ESP IDF+Espressif IDE 的官方套件组合,又或者是 Arduino+VScode 的开放生态环境进行开发

乐鑫官方 ESP-IDF,这是官方的首推的开发方式,能够最大限度发挥ESP32的性能,代价就是不方便或者说是开发不是那么高效;

乐鑫官方出品 Arduino core for the ESP32,官方出品的 Arduino 编程软件支持,上手简单,大部分编程语法和 Arduino 兼容,借助于 Arduino 生态,有非常丰富的资源可直接使用

每个组合各有各的优势,可以根据自己的开发习惯来选择。

环境搭好之后,可以去跑下例程,如果是默认安装路径的话,在下面这个位置应该可以找到“hello world”文件夹

C:\Espressif\frameworks\esp-idf-v4.3.2\examples\get-started

用vscode—打开文件夹—hello world,然后选择COM和esp模块,打开hello_world_main.c就可以编译和下载了,注意vscode最下方工具栏

简单记录下自己遇到的问题:

①找不到头文件

 一般来说,初次编译完后,装了C/C++插件之后会有一个自动提示,然后点击“是”之后就自动解决了

但是我的就一直没有出现(可能是版本不同)网上也没有找到很好的解决方法

半夜,问了一位大佬,他说:

不需要任何插件,查看-命令面板-点击“添加vscode配置文件夹”,左下角点击 垃圾箱  清理一下,重新编译即可解决找不到头文件的问题。 

然后C/C++插件弹出了自动配置的提示,然后成功解决!

        然而,非常难过的是,过了一天,换了一个例程,又出现这个问题了,而且此方法居然失效了~又看了十几个贴子,尝试了各种方法:

  1. 先在Cmakelist中添加路径
    EXTRA_COMPONENT_DIRS += $(PROJCT_PATH)/components/blink
  2. 又尝试在.json文件中添加PATH路径
    "C:/Espressif\frameworks/esp-idf-v4.3.2/components/**“
  3. 加了一个component文件夹手动将官方idf一堆头文件中将用到的文件拖到了同一个层级的根目录文件夹中(其他头文件都识别出来了,但是freertos头文件死活识别不出来,也不能跳转到定义)
  4. 更换头文件命名方式 因为例程里面的#include用的“  ”索引方式,可能出现头文件覆盖问题,说不定因为之前配置过stm32,导致出现了的错误识别。
  5. 删掉.vscode文件夹,清除build文件,然后重启。寄希望于触发系统自动配置条件,获得正常流程中的弹窗选项(可是并没有出现)
  6. ...

        以上方法,有些带来了一点效果(但也不完全),又触发了新的bug,由于理解尚浅,无法直击要害,只能先mark一下,以后熟练了再捣鼓。估摸着是是版本或者系统问题,别人的C/C++插件都会自动弹出选项、系统自动找到头文件路径,但是到了我这就需要一通操作,难道这台笔记本真的和ESP IDF无缘了吗?难道我就要换种方案了吗?

忽然想起来,昨天不是有个能跑起来的吗?(不知道怎么触发但是能够自动内联到esp-idf的头文件)那为什么不把昨天的研究一下,看看系统自动配置是怎么解决问题的。然后发现,系统弹出选项后的.json文件是不一样的,如下面的代码块:

//先使用 control+shift+p 搜索并点击:C/C++编辑配置(JSON)
//然后会发现出现了.vscode文件夹
//使用下面的代码替换 c_cpp_properities.json 文件里面的代码

{
    "configurations": [
        {
            "name": "ESP-IDF",
            "compilerPath": "C:\\Espressif\\tools\\riscv32-esp-elf\\esp-2021r2-8.4.0\\riscv32-esp-elf\\bin\\riscv32-esp-elf-gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "includePath": [
                "${config:idf.espIdfPath}/components/**",
                "${config:idf.espIdfPathWin}/components/**",
                "${config:idf.espAdfPath}/components/**",
                "${config:idf.espAdfPathWin}/components/**",
                "${workspaceFolder}/**"
            ],
            "browse": {
                "path": [
                    "${config:idf.espIdfPath}/components",
                    "${config:idf.espIdfPathWin}/components",
                    "${config:idf.espAdfPath}/components/**",
                    "${config:idf.espAdfPathWin}/components/**",
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": false
            }  
        }
    ],
    "version": 4
}

        复制粘贴后,完美解决了,于是将其存为副本,未来保命使用。

一个月后更新的新方法:

        发现遇到这个问题的朋友还挺多的,交流之后又碰撞出了新的解决方案:

  • 强上地址索引法(直接加绝对地址)

  • 修改componet中的cmakelist法(神奇且有效)

②Cmake插件出现问题

按照流程配置好环境的时候,一般会自动下载一个Cmake tools,这个插件有时可能会出现意料之外的错误,可以在插件里面找到Cmake tools--右键 禁用工作区 再试一下。

小结

整体的环境搭建来说还是比较顺利的,没有遇到非常奇怪的bug,不过相较于STM32的环境配置还是要麻烦一些,目前板子还没到,所以这两天先预热一下^ ^,下一篇会对整理《ESP32-C物联网开发实战》对原理和一些基础的代码板块进行分析。

猜你喜欢

转载自blog.csdn.net/TenYao_/article/details/128682160