2026.03 VSCODE + ESP-IDF 之ESP32的项目结构 论 CMakeLists
VSCODE + ESP-IDF 之ESP32的项目结构 论 CMakeLists
前言
好的,让我们继续,当运行完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之前必备的前置知识了,希望你看完能够有所收获。
更多推荐



所有评论(0)