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

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

先上报错图片。

ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题_第1张图片

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

ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题_第2张图片

ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题_第3张图片

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

第一种:

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

ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题_第4张图片

ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题_第5张图片

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

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

ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题_第6张图片

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

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

第二种:

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

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

ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题_第7张图片

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

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

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

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

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

ESP32-IDF 使用VSCODE添加自己的头文件后无法找到的问题_第8张图片

 

你可能感兴趣的:(esp32,ESP32,VSCODE,makefile,cmake)