ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Windows下CLion+ESP-IDF开发ESP32:配置、烧录与调试指南

Windows下CLion+ESP-IDF开发ESP32:配置、烧录与调试指南 我在Windows上第一次配CLionESP-IDF开发环境是在一个周末的下午。当时我照着网上的教程一步步装VSCode也装好了扩展但总有几个地方不对劲代码跳转时灵时不灵编译用ESP-IDF命令行倒是没问题一放进IDE就报错。折腾了两天后我把VSCode删了转头试CLion之后一直用到现在。这篇东西就是把我这两三年在Windows下用CLion开发ESP32的经验整理出来从ESP-IDF安装、CLion插件配置、烧录串口到OpenOCD调试再到各种Windows专属的坑一次性讲清楚。适合刚入门想选IDE的人也适合已经在VSCode里被折磨过、想换个舒服工具的老手。1. 为什么我在Windows上坚持用CLion做ESP32开发1.1 三套开发方案的天花板ESP32开发的主流路线其实就那么几条Arduino IDE、VSCode配Espressif官方插件、CLion配ESP-IDF插件。很多人会先摸到Arduino IDE因为它真的零门槛选个板子、装个库、点上传就完事。但Arduino封装太厚你想用ESP-IDF的新特性、想管多个组件、想精细控制分区表和编译选项的时候就会感觉到它的天花板。特别是ESP-IDF本身迭代快Arduino内核跟进总是慢半拍。VSCode配官方插件是目前文档最全的路线Espressif的工程师一直在维护遇到问题搜一搜基本有解。但VSCode的智能提示本质是LSP转接C/C插件的代码分析和索引靠的是后台进程工程一大比如加入了ESP-IDF全部源码和大量组件之后经常会索引到一半崩掉或者跳转跳到一个错误的头文件副本。这种问题不致命但会一次次打断你写代码的思路。CLion不一样。它是JetBrains家的C/C IDE对CMake项目的解析是原生的。ESP-IDF从4.0开始就是CMake加Ninja的构建底座CLion在理解这个底座的时候不需要任何转接。你用CLion打开一个ESP-IDF工程头文件搜索路径、宏定义、编译选项都是直接从CMake里读出来的代码分析和实际编译吃的同一份配置。1.2 CLion能被选中的本质原因构建系统骨子里是CMake很多人没想明白一个问题IDE和构建系统是两回事。ESP-IDF的构建过程分成两层第一层是CMake收集所有组件、生成构建规则第二层是Ninja按规则真正调用编译器。CLion做的事情其实就是把第一层CMake的配置过程、第二层Ninja的执行结果都可视化然后再利用这些信息做代码索引。这就是为什么CLion和ESP-IDF的组合天然顺畅CLion不需要像VSCode那样靠插件去猜“这个项目用了哪些头文件”它直接问CMake而CMake给的是标准答案。宏展开、函数跳转、重命名重构这些操作都能拿到真实编译环境里的信息不会出现“这里明明定义了宏IDE却标红”的尴尬。还有一点对Windows用户非常重要CLion对路径、编码、中文环境的容错能力比VSCode那一套组合插件强很多。后者经常因为Python的编码、终端环境变量、路径里的空格而翻车而CLion配置好CMake profile之后整个过程相对可控。1.3 什么样的开发者适合这条路我个人的判断标准很简单如果你已经在用JetBrains家的其他IDE比如IntelliJ IDEA或者PyCharm习惯它的快捷键和操作逻辑那CLion几乎不需要学习成本直接就能上手。如果你做的是一个组件多、结构复杂的项目需要频繁在源码之间跳转、重构CLion的索引和搜索能力会明显拉开差距。反过来如果你只是点个灯、读个传感器或者想快速出原型那Arduino IDE甚至PlatformIO可能更合适。CLion这套环境毕竟要花时间配置而且它不会帮你避开驱动、串口、JTAG这些嵌入式开发本身就有的糟心事。2. 装好ESP-IDF本体安装器、Python与路径的底层逻辑2.1 安装器还是Git CloneWindows下装ESP-IDF我强烈建议直接用官方离线安装器。它全名叫Espressif-IDE Installer或者ESP-IDF Tools Installer会一次性帮你装好Python、GCC交叉编译工具链、Ninja、OpenOCD、串口驱动检测以及ESP-IDF本身。用离线安装包可以避免在下载工具链的时候被网络折腾装完大概占你十几个G的磁盘空间这是正常现象别慌。用Git Clone的方式装IDF不是不行但Windows上你还要自己解决Python环境、工具链路径、OpenOCD等一系列东西。除非你特别想玩master分支的每日构建或者你本身就是在Windows下做Espressif工具链相关开发否则不要给自己加戏。版本选择上选官方稳定版比如v5.3.x这样的release版本不要用master。稳定版和CLion插件的兼容性、和组件的依赖关系都更靠谱master偶尔会引入新的构建行为你排查的时候会发现网上教程全部失效。2.2 安装前的预检查用户名和路径这一条我放在最前面是因为它在Windows下能决定你整个环境能不能用。安装前一定要确认两件事Windows用户名为英文安装路径不含中文和空格。交叉编译工具链用的是GCC这东西对非ASCII路径的支持一直很糟糕。中文用户名会导致C:\Users\小明\.espressif这条路径里的Python进程直接爆编码错误甚至GCC都会报找不到文件。CMake和Ninja对路径里的空格大都还能忍但ESP-IDF里的脚本一多某些脚本对路径处理不严谨空格就会变成隐形炸弹。如果你已经用中文用户名了别想着通过改环境变量来救根源在用户目录。最省事的方案是创建一个标准管理员英文账户专门用于开发。如果你实在不想换账户可以把IDF整个装到D:\esp然后在CLion里全部手动配置绕开用户目录。但你还要注意安装器会把一些工具配置和缓存写到用户目录下的.espressif文件夹这一步仍然可能被中文用户名坑到。所以我的结论还是那句话别赌换英文账户。2.3 安装完成后的验证方法安装完成后开始菜单里会出现一个快捷方式名字大概是“ESP-IDF PowerShell”或者“ESP-IDF CMD”。这个快捷方式的作用是在打开终端的同时执行一个激活脚本把IDF工具链的bin目录、Python虚拟环境、OpenOCD路径都加进当前终端的PATH里然后设置IDF_PATH环境变量。你在这个终端里输入idf.py --version如果能看到版本号说明安装成功。这一步很重要因为CLion配置的本质就是把你手工打开这个终端时所做的事情在IDE里自动化复现。如果你好奇安装器到底改了啥可以去看安装目录下生成的脚本文件。比如C:\Espressif\idf_cmd_init.bat或者PowerShell版本的激活脚本。读懂这些脚本之后CLion配置出任何问题你就知道该往哪个方向查了。2.4 安装完以后的目录结构安装器的默认安装路径是C:\Espressif下面会有几个关键目录之后CLion配置要用C:\Espressif\frameworks\esp-idf-v5.3.1ESP-IDF源码本体也就是IDF_PATH。C:\Espressif\toolsGCC工具链、Ninja、OpenOCD等都在下面每个工具还有自己的版本子目录。C:\Espressif\python_envIDF自带的Python虚拟环境版本号不同目录名也不同。记下这三个路径它们就是CLion里要填的IDF Path、Tools Path和Python Virtualenv Path。3. CLion中的两个关键设置入口IDF路径与CMake Presets3.1 方案AJetBrains官方ESP-IDF插件现在CLion配ESP-IDF最省心的方式是装JetBrains官方的ESP-IDF插件。打开CLion的设置进入Plugins搜索“ESP-IDF”安装那个由JetBrains官方维护的插件就行。装完插件之后设置里会多出一个语言框架配置项Settings Languages Frameworks ESP-IDF。这里要填三样东西IDF Path填刚才记下的C:\Espressif\frameworks\esp-idf-v5.3.1。Tools Path填C:\Espressif\tools。Python Virtualenv Path填C:\Espressif\python_env\idf5.3_py3.11_env具体版本号看你装的IDF版本。填完之后插件会自己扫描工具链目录识别出xtensa编译器、Ninja、OpenOCD等组件的路径。之后通过插件提供的“新建ESP-IDF项目”向导就可以直接创建工程并自动配置CMake。这条路对新手最友好你不用关心工具链的底层细节只要路径填对IDE自己把活干完。3.2 方案B手动添加Toolchain和CMake配置如果你不想依赖插件或者你用的CLion版本比较旧、插件行为有变化那手动配置并不复杂反而能帮你彻底理解这套环境的逻辑。核心操作都在两个设置页面里。先看Toolchains设置Settings Build, Execution, Deployment Toolchains。手动配置时不需要在Toolchains里新建什么特殊类型就保留默认的Toolchain就行因为交叉编译器的选择是后面CMake toolchain文件负责的。真正关键的是CMake设置页面里的profile。在Settings Build, Execution, Deployment CMake里新建一个profile然后这样填Build typeDebug或者Release都行。Toolchain选默认的本机toolchain这个toolchain只负责跑CMake和Ninja。Generator选Ninja。CMake options-DCMAKE_TOOLCHAIN_FILEC:/Espressif/frameworks/esp-idf-v5.3.1/tools/cmake/toolchain-esp32.cmake -DIDF_TARGETesp32CMake options里用正斜杠别用反斜杠省得转义出问题。目标芯片如果是ESP32-S3就把IDF_TARGET改成esp32s3。Environment variablesIDF_PATHC:/Espressif/frameworks/esp-idf-v5.3.1;IDF_PYTHON_ENV_PATHC:/Espressif/python_env/idf5.3_py3.11_env如果还遇到找不到Ninja或找不到GCC的问题就把对应工具的bin目录加到PATH环境变量里。为什么CMake options里要指定toolchain文件而不是在Toolchains页面里直接选xtensa-esp32-elf-gcc因为ESP-IDF的CMake模块除了编译器之外还要读IDF_PATH、IDF_PYTHON_ENV_PATH、IDF_TARGET这些变量来决定加载哪些组件、用哪个Python虚拟环境。你在Toolchains页面里光选一个GCC路径能传的上下文太少了CMake根本不知道去哪找IDF的project.cmake。直接用toolchain文件相当于把整个交叉编译上下文一次性交给CMake这才是ESP-IDF官方设计的使用方式。3.3 打开工程并让CLion完成首次加载手动配置完成后打开工程的方式也有讲究。如果你用插件可以直接走向导。如果你走手动路线最简单的办法是从IDF的examples目录里复制一份hello_world工程放到你自己的workspace目录然后用CLion的File Open选择该目录下的CMakeLists.txt。CLion会自动识别出这是一个CMake工程并按你配置的profile开始加载。第一次加载会有点慢因为CMake要扫描IDF的所有组件同时CLion要建索引。这里有个经验CMake profile一定要在打开项目之前就建好否则CLion第一次加载时不知道用哪个profile会用默认的编译器跑一遍CMake然后报一堆错。你回头再配置profile还得先删掉build缓存目录否则旧的CMakeCache会被复用换来换去反而更乱。3.4 索引优化让CLion别扫不该扫的东西工程加载完毕后第一件事是优化索引范围。在Project面板里找到build目录和managed_components目录右键选择Mark Directory as Excluded。build目录是编译产物managed_components是组件管理器下载的依赖源码如果你把它排除掉CLion的索引会轻很多跳转也不会误入这些你不经常改的地方。如果排除之后索引还是卡可能是索引缓存本身坏了可以执行File Invalidate Caches再重启一般都能解决。4. 跑通烧录与串口监视脱离命令行才是真痛快4.1 烧录前的准备串口驱动与端口识别第一块绊脚石通常是串口。你的ESP32开发板通过USB连到电脑板上那颗USB转串口芯片决定了Windows认不认它。最常见的芯片是CP2102和CH340还有一部分新板子用的是ESP32-S3原生USB。插上之后打开设备管理器在“端口(COM和LPT)”下面能看到一个新出现的COM口比如COM3。如果看到黄色感叹号说明驱动没装对去芯片厂商官网下载驱动装上。烧录前先确认一件事电脑上有好几个COM口哪个是开发板的最笨但最可靠的办法是拔掉USB线再插上看哪个COM口消失又出现。还有一种情况有些ESP32-S3板子默认进入的是下载模式USB接口才会枚举出来如果你的板子插上没反应按住板子上的BOOT键再插USB看到新端口后再松开。4.2 Flash运行配置在CLion里插件装好后会提供多种运行配置类型。你要烧录程序就新建一个“ESP-IDF Flash”的运行配置选好目标串口和目标芯片然后直接点运行。CLion会先调用CMake构建然后调用idf.py的烧录命令把固件通过串口写进芯片。如果你走的是手动配置路线也可以在CLion的Terminal面板里打开一个终端在终端里先激活ESP-IDF环境然后手动执行烧录命令idf.py -p COM3 flash不过既然用CLion我还是建议直接用运行配置因为一切都在IDE里不用来回切窗口。唯一要注意的是如果你的串口被其他程序占用烧录时会报could not open port COM3: Access is denied。4.3 串口监视的几种方案烧录完想看日志就需要串口监视器。CLion插件自带“ESP-IDF Monitor”运行配置选好端口之后点运行就能看到芯片输出的日志。这个Monitor本质上是idf.py monitor的封装它能自动识别波特率还能配合IDF的日志系统显示时间和级别。新版CLion在较新版本里也加入了内置的串口监视器可以直接打开。如果你两个都没有那就用Espressif插件自带的串口工具或者干脆用第三方串口助手选波特率115200也能看日志只是少了按级别过滤的便利。这里有个每个新手都会卡住的操作怎么退出Monitor不是按Q也不是CtrlC而是按Ctrl]按完之后才会退出回到终端。这个快捷键.IDF文档里提过但实际用起来总有人忘记。4.4 组合运行配置一键烧录加看日志既然烧录和监视都装好了就可以配置一个组合运行配置实现一次点击完成“编译、烧录、打开串口监视器”。在Run/Debug Configurations里新建一个Compound类型的配置把刚才的“ESP-IDF Flash”和一个Monitor配置加进去然后运行这个Compound就好。不过有个实际问题Monitor会一直占用串口。你想再次烧录的时候必须先手动停掉Monitor否则Flash配置会报串口被占用。所以实际上我很少用Compound更多是分开点烧录的时候保证串口空闲烧录完再开Monitor。5. 调试器的悬空问题CLion配置OpenOCD的正确姿势5.1 你的开发板到底能不能调试嵌入式调试和纯软件调试最大的不同在于你需要硬件调试接口。ESP32经典款、普通ESP32开发板板载的基本只有UART转USB没有JTAG接口要调试必须外接一个调试器比如Espressif官方的ESP-ProG。而ESP32-S3、ESP32-C3等新片有一部分内置了USB-JTAG功能直接用USB线连电脑就能同时供电、烧录、调试。判断方法很简单看你的板子资料有没有提“USB-JTAG”或“板载调试器”。如果没有那你大概率只能烧录加看日志想用断点调试得先买调试器。这一点在配置之前搞清楚不然你会卡在OpenOCD连接失败上很久。5.2 OpenOCD路径与接口配置CLion的调试链路是GDB加OpenOCD的组合。OpenOCD负责把JTAG协议翻译成GDB能理解的调试接口GDB负责读写寄存器和内存、管理断点。CLion插件会在调试运行配置里自动指定OpenOCD路径和参数手动配置的话就要自己处理。OpenOCD的路径在你安装IDF时已经存在了一般在C:\Espressif\tools\openocd-esp32\版本号\openocd-esp32\bin\openocd.exe。你需要在CLion的ESP-IDF设置里把OpenOCD路径指向它插件自动扫描通常能找到找不到就手动指定。手动调试的方式是先在终端里启动OpenOCD指定目标板子的配置文件。不同板子的cfg文件不一样比如ESP32-WROVER-KIT对应的是board里的某个cfgESP32-S3内置JTAG对应的是另外的配置。启动命令大概长这样openocd.exe -f board/esp32-wrover-kit-3.3v.cfg如果板子型号不在列表里可以选interface和target分开配置。启动成功后OpenOCD会监听本机的3333端口。然后回到CLion新建一个“GDB Remote Debug”运行配置GDB选xtensa-esp32-elf-gdb.exe远程连接填tcp:localhost:3333就可以像调试普通程序一样下断点了。5.3 断点调试的实操体验我第一次用CLion加OpenOCD在ESP32-S3上断点调试的时候感受就是终于不用靠printf猜逻辑了。在那个环境里变量值可以直接悬浮窗看堆栈窗口能看到出错函数的调用链一条语句一条语句地走Bug藏在哪里一目了然。但嵌入式调试也有它的麻烦。首先是时序敏感问题你在断点处停下芯片其他外设还在跑有时候会因此触发看门狗复位调试直接断掉。其次是串口冲突问题调试器和串口监视器会抢同一个USB接口你得先关掉Monitor再进调试模式。还有一个容易被忽略的点ESP-IDF默认构建选项可能没开调试优化。断点位置和源码对不上、变量被优化掉这些都可能是优化选项导致的。真到调试的时候建议在CMake里用Debug构建类型并且在menuconfig里把编译器优化等级调成-O0或者-Og不然你会看到一堆乱跳和看不到的变量。5.4 我为什么建议你把调试器当作补充工具虽然调试器很强大但我这两年实际开发的经验是在ESP32这种资源受限的单片机上很多时候日志比调试器更高效。原因很简单逻辑bug可以断点抓但跟外设交互、跟传感器时序相关的bug断点本身就破坏了时序这时候printf反而是最干净的观测方式。所以我现在的习惯是代码里保留一层轻量日志系统平时靠日志定位问题遇到那种逻辑分支特别复杂、日志怎么打都觉得隔靴搔痒的bug再上调试器。CLion这两条腿都能走这才是它真正舒服的地方。6. Windows下我踩过的坑与完整排查链路6.1 中文用户名的“路径炸弹”这个坑我在开头就打了预防针。具体现象是插件配置好了项目也创建了但一编译就报SyntaxError: (unicode error)或者GCC报找不到头文件还有的时候是Python脚本直接崩溃。一开始你会以为是环境变量问题改了半天还是不行。排查思路先看现象集中在哪一步。既然编译走的是CMake加Ninja那第一步就是确认CMake配置有没有成功。如果CMake配置阶段就挂再看CMake缓存目录在哪里。然后清点所有路径里有没有中文。执行echo $env:USERPROFILE如果输出的是中文路径基本就破案了。修复方法没有银子弹。新建一个英文标准管理员账户在那个账户下重装ESP-IDF这种做法最干净。如果你不想换账户只能把IDF装到D盘英文路径然后把用户目录下的.espressif设置成IDF_TOOLS_PATH指向的新位置。但这样绕了一圈你以后每次配置CLion都要格外小心我不推荐。6.2 Python环境识别混乱这是我见过最多的CLion配置问题。现象是在ESP-IDF PowerShell里执行idf.py --version没问题但一回到CLionCMake配置阶段就报找不到Python解释器或者干脆报idf.py没有被安装。排查思路先搞明白CLion调用CMake时用的到底是哪个Python。IDF自带的是一个虚拟环境它不在系统的PATH里你必须让CMake进程的PATH包含虚拟环境的Scripts目录。CLion的CMake profile里如果没有设置IDF_PYTHON_ENV_PATHCMake就只会在系统默认Python里找那当然找不到idf.py需要的环境。修复方法也很直接在CMake profile的Environment variables里加上IDF_PYTHON_ENV_PATHC:/Espressif/python_env/idf5.3_py3.11_env同时在PATH里把C:/Espressif/python_env/idf5.3_py3.11_env/Scripts加进去。改完之后重新加载CMake问题基本就消失了。不要在系统层面乱装Python或者手动改系统PATH那样只会制造更多歧义。6.3 串口被占用或打不开现象很明确烧录时报could not open port COM3: Access is denied或者打开Monitor后收不到任何数据而且过几秒程序自己退出了。排查链路先排除软件占用问题。最常见的元凶是另一个串口工具还开着或者你的Monitor配置和Flash配置指向了同一个串口调试器也在抢端口。打开Windows资源监视器在网络和端口那里筛选COM3的相关进程看有没有不明进程占着。如果没有任何进程占用再考虑驱动问题把USB转串口的线拔掉重插如果设备管理器里端口图标上有感叹号卸载设备重新安装驱动。还有一个Windows特有的问题某些蓝牙设备、虚拟机软件会虚拟出COM口如果这两个COM口编号冲突程序可能会打开到错误的端口。所以一定要在设备管理器里确认COM号。6.4 CLion索引卡到怀疑人生大中型ESP-IDF工程打开CLion会自动扫描整个工程和IDF组件如果没排除build和managed_components索引的CPU占用高到风扇狂转并不是新闻。排查思路看CLion右下角的Progress是正在建索引还是卡在CMake配置阶段。如果索引一直在跑第一时间检查排除目录如果CMake配置一直转圈改用Debug模式看CMake报什么错。修复手段有几个一是上面说的排除目录二是在Help Change Memory Settings里提高IDE堆内存默认的堆在大型工程上确实不够三是定期用File Invalidate Caches清理索引缓存。做完这三步CLion的流畅度会有质的提升。6.5 首次编译奇慢与杀毒软件的误伤Windows上第一次编译一个ESP-IDF工程花个十几二十分钟是正常的因为要编译Bootloader、所有组件和你的应用。但如果你发现第二次编译还是那么慢甚至每次编译都在重编相同文件那就要考虑杀毒软件了。Windows Defender的实时防护会扫描新生成的文件编译过程中产生了大量新文件和中间产物Defender不放过任何一个最终编译时间直接翻倍。修复方法在Windows安全中心的“病毒和威胁防护”设置里添加排除项。建议排除这三个地方C:\Espressif你的项目build目录CLion的缓存目录把编译速度恢复到一个可接受的水平。另外如果用的是第三方杀毒软件里面还有“主动防御”之类的功能也建议对开发者目录关闭。6.6 CMake缓存被旧版本污染这个坑会在你切换芯片型号时遇到。比如你之前编译的是ESP32后来想在那个项目上换成ESP32-S3在CMake配置里改了IDF_TARGET结果编译出来还是老的芯片或者报CONFIG_IDF_TARGET不一致。原因很简单CMakeCache.txt里缓存了旧目标的配置CLion不会自动清理。修复方法就三步删除整个build目录删除sdkconfig和sdkconfig.old如果项目不再需要旧配置重新加载CMake。也可以直接在IDF终端里执行idf.py fullclean效果一样顺带把Ninja的中间产物也清掉。7. 配置完成后项目实操中的组件与配置管理7.1 组件管理器IDF 5.x的依赖方式ESP-IDF从5.x开始官方把“组件管理器”提到了很重要的位置。以前你找第三方库要么手动git clone要么从网上找zip包放进components目录。现在组件管理器直接从统一的仓库解析依赖你只需要在main/idf_component.yml文件里声明依赖比如dependencies: idf: 5.0 espressif/esp_lcd_i2c_io: ^0.1.0保存之后下次构建时组件管理器会把对应组件下载到工程的managed_components目录并生成一个dependencies.lock锁文件。这个锁文件建议提交到git保证团队所有人用同一个版本的组件。实际使用中这种依赖管理方式的好处是你不用再手动维护一堆第三方代码副本坏处是首次拉取组件需要网络有些组件仓库响应慢。遇到构建时下载超时重试一般能过或者直接检查网络环境。7.2 menuconfig与sdkconfig图形化配置仍然需要命令行CLion本身不会直接打开menuconfig你需要先打开ESP-IDF终端执行idf.py menuconfigmenuconfig是ESP-IDF的图形化配置界面分区表、Flash大小、启用哪些组件、日志等级都在这里调。配置结果会写入项目根目录下的sdkconfig。这里有一条铁律不要手动编辑sdkconfig它的格式和依赖关系很微妙手动改很容易出问题。如果你想把这套配置分享给团队应该维护一个sdkconfig.defaults文件再把默认值写进去。在CLion里插件的运行配置列表里通常也有Menuconfig这一项点运行就能启动终端界面不用自己切到外部终端。不过这个功能不是所有版本都好使遇到不显示界面的情况直接用外部终端更稳妥。7.3 日常开发的工作流建议环境配好之后工作流的规范化能帮你省掉大量重复劳动。我的建议是每个工程独立git仓库IDF本身作为只读工具链放在工程目录之外不要混在一起。项目里提交sdkconfig.defaults和dependencies.lock忽略build目录和sdkconfig。还有一个小技巧在CLion的Settings里打开Tools Terminal把Terminal的shell设为一个会自动执行ESP-IDF激活脚本的PowerShell。这样你在CLion里打开终端面板就自动有了idf.py命令不用每次手动复制快捷方式的目标。具体路径参考开始菜单里“ESP-IDF PowerShell”快捷方式的目标参数填进CLion的Shell path里就行。这套环境我用了两三年从ESP32到ESP32-S3从裸机固件到带FreeRTOS的工程都在CLion里跑过。如果让我总结一句最实在的经验那就是CLion在CMake成功之后会自动生成compile_commands.json代码跳转、补全、重构全都建立在这份文件上这意味着你用CLion写ESP-IDF时IDE体验是工程级的不是插件附赠的玩具。所以配置阶段多花点心思把路径和CMake profile弄干净日常开发能省下的时间远超你想象。
返回列表