使用CLion搭建ESP32-IDF开发环境

ESP-IDFv4.0后,使用了CMake构建工程,而Clion也是使用CMake进行工程的构建的,理论上是可以使用CLion开发IDF的。为了能够在开发ESP32时使用上喷气机家族非常好用的代码补全系统,这里记录环境配置的过程。

前置环境

搭建前,需要先搭建好以下一些环境:

  1. 完整的ESP-IDF环境,可以进行正常开发。
  2. 可以正常使用的Clion。

添加工具链

首先,我们需要将IDF使用工具链加入到CLion,包括虚拟python环境,idf.py,编译器等,这里IDF实际上已经做好了,在安装目录xxx\Espressif下,有一个idf_cmd_init.bat文件,该脚本将所有的工具链都添加了进来,只需要在CLion选择它即可。

打开CLion设置,在构建、执行、部署->工具链中点击加号添加新工具链。命名为ESP-IDF,展开添加环境,选择环境文件,在弹窗中选择上面提到的idf_cmd_init.bat文件,点击应用。

image-20230917010951135

更改工程CMake设置

打开一个IDF工程(可以从IDF的example文件夹中复制),打开设置,在构建、执行、部署->CMake中选择配置,将工具链修改为上面创建的ESP-IDF

image-20230917011445825

添加IDF_PATH环境变量

在工程的CMakeLists中有这样一段代码:

1
include($ENV{IDF_PATH}/tools/cmake/project.cmake)

从环境变量IDF_PATH路径得到IDF的cmake应用文件。

这个环境变量默认是没有的,因此需要我们进行添加IDF_PATH为安装目录xxx\Espressif的环境变量,这里有三种添加方法,我只使用一种:

在每个工程中添加局部的环境变量

这个在上面修改Cmake的地方有一个环境属性可以修改。

修改工具链的配置文件

在工具链的配置文件的开头,加上设置环境变量的语句set IDF_PATH=xxx\Espressif

修改系统的环境变量

本次使用的方法,在系统的环境变量中添加一条IDF_PATH

添加其他编译参数

完成上面步骤后,CLion会自动重新加载Cmake,完成后,我们就可以编译了。在右上角选择Cmake应用,按下编译按钮就可以编译。

但是我们还需要设置一些其他参数。

  1. 目标芯片

    我们使用的ESP32S3芯片,因此我们需要在环境变量中添加IDF_TARGET=esp32s3.添加的位置如图所示:

    image-20230917012433335

添加menuconfig运行脚本

到现在CLion还不能进行menuconfig等设置,这里我们可以使用Clion自带的终端进行操作。

首先。我们知道CLion默认的终端是powershell终端,在桌面上的idf启动文件实际上就是启动了一个终端,并且运行了IDF安装目录下面的Initialize-Idf.ps1脚本进行环境配置,因此我们只需要运行这个脚本就行。

在Clion界面点击右上角,点击编辑配置。

image-20230917172248321

在弹出的窗口中,点击添加配置,添加脚本,选择脚本文本。在文本中填写以下内容:

image-20230917172428197

点击确定保存。

之后可以在配置中选择menucofig运行,即可进行设置。
由于不知道为什么方向键用不了,这里使用j,k建上下移动。

同理,可以用这种方式执行其他idf指令。

遇到的问题

编译时,提示IDF_TARGET错误

1
2
3
IDF_TARGET in CMake cache does not match IDF_TARGET environment variable.
To change the target, clear the build directory and sdkconfig file, and
build the project again

这是环境变量中的IDF_TARGET(我们设置的)与工程中已有的Cmake变量(上次编译生成)不一样。

这时候,我们需要重新加载Cmake,选择重置缓存并重新加载CMake项目即可。

image-20230917012926514