前言好的让我们继续当运行完ESP-IDF的HelloWorld之后也许会成就感满满但接下来。对于几乎没学习过类似烧录体验的我简直是新手噩梦。在开始学习的时候头脑发热头晕眼花为了纪念头昏眼花的我故写下此文。在VSCode上使的代码编写相对简单而且还有AI帮忙。但其文件的管理和Cmake是不得不感觉到头昏脑胀的几个点在这里就着重介绍一下创建一个空白项目吧如果和上一篇教程一样创建了一个工作区记得切换一下侧边才有esp32的图标选择任意一个编译器。根据自己的芯片填好必备的信息。完成后点击打开项目就会打开一个新窗口。在最左侧的侧边栏第一个就可以看到项目的所有文件以树状的形式展开双击就可以打开。有很多前面带“.”的东西都是软件运行中自动生成的环境不用理删掉也会再生成不过可能就会慢。最主要的是main文件夹里面的main.c就是熟悉的主函数啦。指导一切的Cmake不过最重要的其实是CmakeLists文件这里有两份CmakeLists文件一份在外面类似于项目的说明书暂时不用理解外面这个不是很重要主要看main里面的说明书。Main文件的 CMakeLists.txt告诉编译器怎么把这个文件夹里的代码编译成模块。默认创建的项目是这样的。CmakeLists中的所有的操作都是基于当前文件所在的路径SRCS代表着当前路径的“main.c“文件会进行编译INCLUDE_DIRS代表着会使用后面那个字符串的路径进行“.h”文件的编译所以这里目前就是把main文件夹的.c和.h文件都说明好了。可能还是难以理解举个例子假如在main文件夹里面有个PAN文件夹里面有mod.c和他的头文件。只需要修改在main的CmakeLists文件在PAN文件夹里面也不需要一个CmakeLists因为整个main文件夹可以视为一个模组。一个模组只需要一个CmakeLists而且就放在文件夹打开后的目录下。那么就需要添加以Cmake文件为目录的找到mod.c的路径以及.h文件的路径那就是这样idf_component_register(SRCS main.c MOD/mod.c INCLUDE_DIRS . MOD)这样子编译就不会报错了。那添加一个组件刚刚我提到了组件是吧那么就创建一个吧~其实可以把Main文件夹也视为一个组件一个组件里面都有一个独立的Cmake文件用来指导文件的编译如果创建一个新的组件他的路径是固定的都是在components/组件名字有且仅有这个路径如果在其他路径大概是不认的虽然我也没试过同理我们也可以看到他的cmake文件都是基于当前路径添加的路径最后如果添加组件最好在整个项目开始前添加如果添加组件整个项目都需要删除构建点“垃圾桶”要不然会出现奇奇怪怪的bug去掉波浪线小技巧另外在开发过程中很可能会遇到经常出现莫名其妙没有写错或者头文件不认的情况这大概都是因为在链接的过程中出现犯病的问题解决办法也很简单就是一行代码。idf.py reconfigure个人理解就是把库文件都链接起来然后就消失啦。好了以上大概就是怎么解决一些奇怪问题和在真正学习esp32之前必备的前置知识了希望你看完能够有所收获。