☰
CLion使用教程:从安装配置到STM32嵌入式开发
2026/10/1 12:19:21 网站建设 项目流程

CLion 是我这几年用得最顺手的 C/C++ IDE,没有之一。作为 JetBrains 家族的成员,它几乎把 IntelliJ 那套成熟的工程管理、代码分析和重构能力搬到了 C/C++ 开发上,配合 CMake 原生支持,开箱即用。这篇 CLion 使用教程,我会把从安装配置、打开 sln 工程、配置 JNI 环境,到嵌入式 STM32 开发、插件安装和问题排错的完整流程梳理一遍,所有内容都是我实际踩过坑之后沉淀下来的,不是那种复制粘贴的文档。

先说清楚适合谁。如果你正在被 VS Code 的插件配置和编译 task 折腾到崩溃,或者刚从一个平台迁移到另一个平台,又或者是每天在 Keil/CubeIDE 里挣扎的嵌入式开发者,这篇文章都能帮你省下大量时间,直接把 CLion 变成主力开发工具。我也会顺带讲清楚那些让人困惑的高频问题:中文乱码、插件商店搜不到、多个目标程序怎么调试,以及 JNI 和 STM32 的配置细节。

1. 为什么我最终选择了 CLion,它到底能解决什么问题

1.1 CLion 不是又一个 IDE,它是 C/C++ 开发效率的放大器

如果你常年写 C/C++,一定经历过这种尴尬:写 VS Code 插件配置比写代码还久,换台电脑环境就崩;Visual Studio 在 Windows 上香,但一跨到 Linux/macOS 就重度水土不服;嵌入式方向的朋友更是苦于在 Keil、CubeIDE、IAR 之间来回切换。

CLion 的出现正好卡在这个痛点上。作为 JetBrains 家族专门为 C/C++ 打造的 IDE,它对 CMake 的原生支持几乎是教科书级别的,打开 CMakeLists.txt 就能自动索引、构建、运行和调试。同时它内置了性能非常可观的代码分析引擎,不夸张地说,全局搜索、跨文件重命名、智能补全这些基础操作都流畅得像在写 Java 一样顺滑。

CLion 能做什么,一句话就能总结:把 CMake 生态、C/C++ 编译器、调试器、嵌入式工具链整合成一个完整的图形化工作流。适合谁来用?三类人最值得试:一是刚接触 C/C++、被命令行程式编译折腾到怀疑人生的学生;二是做跨平台项目,需要同时维护 Windows/Linux/macOS 版本的后端和客户端开发者;三是从 Keil/CubeIDE 转向统一 IDE 的嵌入式开发人员。

1.2 关于“最新破解版”,我劝你三思

每次搜 CLion 教程,总有朋友问“有没有最新破解版”。我理解学生党的预算压力,但破解版的成本远比一张正版许可高得多。

稍微说几个实际理由。第一,CLion 的破解工具大多要求关闭安全防护,这等于把电脑系统权限直接交给来路不明的程序,风险非常高。第二,破解版通常只能固定在某个旧版本上,JetBrains 的插件生态、构建工具链都在不停更新,遇到 bug 连升级都升不了。第三,也是我亲身体会最深的一点,破解版因为改了 IDE 的证书验证逻辑,容易和 CMake、调试器等底层组件出现奇怪的兼容问题,出了问题网上几乎找不到解决方案。

所以更稳妥的做法是:如果你是学生、教师或开源项目维护者,直接去 JetBrains 官网申请免费许可,学生认证通过后可以免费使用所有 JetBrains IDE。工作党可以先试用 30 天,确定能满足需求再按年付费,合理规划预算。

2. 安装配置从 0 到 1:工具链才是真正的主线任务

2.1 下载安装包,用 Toolbox 还是独立安装包

CLion 的下载页面在 JetBrains 官网,目前最新版本对 Windows、macOS、Linux 都有对应安装包。我的建议是:如果你机器上装了多个 JetBrains 产品(比如同时用 CLion 和 IntelliJ IDEA),优先用 JetBrains Toolbox 统一管理。它能自动发现新版本、切换新旧版本、保留不同版本的配置,在插件兼容性出问题时可以随时回滚。

如果只装 CLion 一个 IDE,直接下载独立安装包也挺省事。Windows 下载 .exe,macOS 下载 .dmg,Linux 下载 tar.gz 后解压到 /opt 等目录,运行 bin/clion.sh 即可。装完先别急着写代码,第一步是确认 JDK 和构建工具链的情况——CLion 自带 JetBrains Runtime 可以启动 IDE,但编译 C/C++ 代码完全依赖外部工具链,这一步没配好,后面全是红色波浪线。

注意:CLion 本身只是编辑器加构建调度器,它不会内置 GCC、Clang 或 MSVC,所以安装 IDE 只是完成了一半,工具链才是让整个工程跑起来的关键。

2.2 工具链配置:Windows、macOS、Linux 三平台实操

打开 CLion 后,先进入 Settings → Build, Execution, Deployment → Toolchains。这里能看到当前检测到的编译器列表,CLion 会根据系统环境自动扫描常见的 GCC、Clang、MSVC。如果没有被识别,就手动加一个。

  • Windows 平台:我推荐安装 MinGW-w64。如果你用 MSVC,CLion 也能识别 Visual Studio 的编译环境,但前提是必须安装好 Build Tools 并保持 VS 版本在受支持范围内。日常写算法题、做小项目,MinGW 更轻量;要调 Windows API 或做 Windows 桌面开发时,再用 MSVC 工具链。
  • macOS 平台:什么都不装也能用。Xcode Command Line Tools 自带的 clang 会被 CLion 自动识别。如果之前没装过,在终端执行 xcode-select --install 装一下就行。
  • Linux 平台:用系统包管理器安装 build-essential 或对应的 GCC 开发包。Ubuntu/Debian 系就是 sudo apt install build-essential cmake ninja-build。

工具链配完之后,再去 Settings → Build, Execution, Deployment → CMake 确认 CMake 路径。如果系统里没装 CMake,CLion 会提示,Windows 可以通过包管理器或官方二进制安装,Linux 就 apt install cmake。三步走完之后,新建一个空工程,试着 Build 一次,绿色小锤子能亮起来,就说明环境通了。

2.3 中文输出乱码的根源与三种解法

这是搜索热度极高的一个问题。代码里 printf("中文"),控制台却乱码一片,你是不是也遇到过?这里的根源往往有两个:源码文件的编码和终端控制台的编码不一致。

CLion 默认把源码存成 UTF-8,这没问题。但 Windows 下默认的控制台代码页可能是 GBK(代码页 936),UTF-8 的中文字节流按 GBK 解码,自然就是乱码。最简单的临时方案是在运行前执行 chcp 65001 把控制台切到 UTF-8,但这样做每次启动都要手动敲,而且对已打开的中文标题窗口无效。

更推荐的做法是直接从代码层面解决。以 Windows + MinGW 为例,在 main 函数开头调用 Windows API:

#ifdef _WIN32 #include <windows.h> #endif #include <iostream> int main() { #ifdef _WIN32 SetConsoleOutputCP(CP_UTF8); #endif std::cout << "中文输出测试" << std::endl; return 0; }

同时在 Settings → Editor → File Encodings 中把 Global Encoding、Project Encoding 和 Default encoding for properties files 全部设为 UTF-8。再在 Settings → Build, Execution, Deployment → Console 中,把 Default Encoding 也改成 UTF-8。三管齐下,标题栏、Log 输出、中文注释都不会乱。

注意:以上方法对 Windows 有效。macOS/Linux 的终端天然 UTF-8,几乎不会有中文乱码问题;如果遇到,检查一下远程开发环境的 LANG 环境变量是不是 zh_CN.UTF-8。

3. 手把手把各种工程塞进 CLion:CMake、sln、多目标调试

3.1 最顺的工作流:直接打开 CMake 工程

CLion 对 CMake 的支持是它的看家本领。拿到一个已存在的 CMake 项目,直接 File → Open 选择含 CMakeLists.txt 的根目录,CLion 会自动生成 cmake-build-debug 等构建目录并完成索引。首次加载大项目会慢一些,等右下角的进度条跑完,代码高亮和跳转就全部可用了。

如果 CMakeLists.txt 里有新增源文件但 IDE 没感知到,不用重启,点一下 CMake 工具窗口里的 Reload CMake Project 图标,或者把 CMakeLists.txt 里的任意位置加个空格再撤销保存,都能触发重新加载。这个操作我几乎每天都在按,已经是肌肉记忆了。

3.2 打开 Visual Studio 的 sln 工程,怎么处理

在热词里出现“clion打开sln工程”,说明确实有不少人想把 Visual Studio 的解决方案迁移到 CLion。CLion 从 2021.1 版本开始支持直接打开 .sln 文件,原理是在后台把 MSBuild 工程解析成 CLion 能识别的中间格式,然后通过 MSVC 工具链编译。

具体操作很简单:File → Open,选择 .sln 文件,确认,CLion 会自动进入解决方案观察窗口。但有一个前提条件——你的机器上必须装好了 Visual Studio 或 Build Tools,并配置好 MSVC 工具链。没有 MSVC,打开后只会看到一堆解析错误。

这里必须泼一盆冷水:如果 sln 工程重度依赖 Visual Studio 的自定义 MSBuild Targets、旧版 MFC 控件、预编译设置或某些私有 NuGet 包,CLion 的解析器不一定能完整还原,可能只会加载部分项目。从我的迁移经验来说,如果 sln 是你团队唯一维护方,建议先用 CMake 把核心逻辑模块化重写一遍,再整体迁到 CLion;如果只是临时想看看代码,直接打开能跑自然最好,跑不了也别硬扛,退回用 VS 维护。

3.3 同一项目里多个目标程序,调试时怎么选

在热词中还有一个高频问题:“clion调试同一项目多个目标程序”。这个场景在大型项目中很常见:一个 CMakeLists.txt 里同时 add_executable 出 server 和 client 两个可执行文件,或者生成了可执行程序加测试程序。

首先,保证每个目标都写清楚了。CMakeLists.txt 里大致是这样:

cmake_minimum_required(VERSION 3.20) project(multi_targets CXX) set(CMAKE_CXX_STANDARD 17) add_executable(server server.cpp common.cpp) add_executable(client client.cpp common.cpp) add_executable(test_unit test_unit.cpp common.cpp)

CLion 会自动在右上角运行配置下拉框中列出 server、client、test_unit 三个可执行目标。想调试哪个,就在下拉框里选中它,然后点旁边的 Debug 图标或按 Ctrl+F5,断点会命中所选目标的代码。这里有个关键细节:下拉框显示的可能是 CMake Application 加目标名,别选错。

如果你还需要同时启动多个目标,比如先起 server 再起 client,CLion 没有像 VS 那样直观的“多启动项目”按钮,但可以借助 Run/Debug Configurations 里新增一个 Compound 配置。先为每个目标单独建好运行配置,再在运行配置面板里创建 Compound 配置,把 server 和 client 加进去,点一次运行就能启动多个进程。不过多进程调试还是建议用 attach 方式连到已经启动的进程上,不要指望一键搞定一切。

4. 在 CLion 中配置 JNI 环境,搞定 Android 原生开发

4.1 JNI 环境到底需要准备哪些东西

JNI(Java Native Interface)是 Java 和 C/C++ 之间的桥梁,做 Android NDK 开发、高性能计算音视频编解码时都会碰到。CLion 虽然不做 Android UI,但完全能承担 native 层代码的编写、编译和调试。

配置之前,你机器上要有:一个 JDK(版本 8 以上),因为 JNI 头文件 jni.h 就躺在 JDK 的 include 目录里;一个 C/C++ 编译器,这步和前面的工具链配置可以复用;以及一个能生成 JNI 头文件的工具,JDK 自带的 javac 就支持 -h 参数,无需额外安装。

我见过不少新手在配置时卡住,原因是翻遍磁盘也找不到 jni.h。不要急,先验证 JDK 装好没有,终端执行 java -version,再执行 javac -version。前者只能说明 JRE 存在,后者能确认 JDK 完整。确保 JAVA_HOME 环境变量已经设置到 JDK 根目录,JNI 配置就成功了一半。

4.2 从 Java 声明到 CLion 构建动态库的完整步骤

第一步,先在 Java 侧写一个 native 方法并生成头文件。假设包名是 com.example.jnidemo,类名是 NativeLib:

package com.example.jnidemo; public class NativeLib { static { System.loadLibrary("native_demo"); } public static native int add(int a, int b); }

在项目根目录执行:

javac -h . src/com/example/jnidemo/NativeLib.java

这条命令会根据包名自动生成 com_example_jnidemo_NativeLib.h。头文件里会看到 JNIEXPORT 开头的函数声明,函数名是 Java 包名加类名加方法名的拼接,这串名字一个字符都不能改,改了就加载不到。

第二步,在 CLion 里新建一个 C/C++ 工程,比如 JNI Demo。打开 CMakeLists.txt,加入 JDK 头文件路径和动态库构建指令:

cmake_minimum_required(VERSION 3.20) project(native_demo C) set(CMAKE_C_STANDARD 11) include_directories( $ENV{JAVA_HOME}/include ) if(WIN32) include_directories($ENV{JAVA_HOME}/include/win32) elseif(APPLE) include_directories($ENV{JAVA_HOME}/include/darwin) endif() add_library(native_demo SHARED native.c)

把刚才生成的头文件和对应的 .c 文件放进工程目录,在 native.c 里实现 add 函数。

第三步,直接 Build,Windows 下会得到 native_demo.dll,macOS 下是 libnative_demo.dylib,Linux 下是 libnative_demo.so。把这个文件放到 Java 的库搜索路径下,回到 Java 工程执行 java com.example.jnidemo.NativeLib,就能调用到 C 代码了。

4.3 JNI 配置的几个大坑

关于 JNI 和 CLion 的搭配,我踩过的坑比配置步骤多,先说三个高频的。

第一个是位数不匹配。Java 是 64 位的,就必须用 64 位编译器生成 64 位动态库,32 位编译器生成的库加载时会直接报 UnsatisfiedLinkError: Unable to load library。第二个是跨平台路径问题,macOS 需要在 include 后面加 darwin 目录,Windows 要加 win32 目录,Linux 则不加。我见过很多把 Windows 的路径硬写在 mac 工程里的情况,编译时找不到 jni_md.h,一头雾水。第三个是函数名不一致,特别是改过 Java 包名后没有重新生成头文件,Java 侧还在想着旧函数名,符号匹配不上。建议每次改完 Java 代码都重新执行 javac -h 覆盖旧头文件。

提示:CMake 中的 $ENV{JAVA_HOME} 语法是从系统环境变量读取路径,只要 JAVA_HOME 配得对,跨机器换环境时这段配置基本不用改。

5. CLion 嵌入式开发:STM32 环境搭建与调试实录

5.1 为什么我拿 CLion 替代了 STM32CubeIDE

做 STM32 的朋友都知道官方 STM32CubeIDE 是免费的,但它的代码编辑体验实在不敢恭维,界面卡、补全弱、跨平台体验更是一言难尽。CLion 在嵌入式方向做了大量投入,自带的 Embedded Development 支持配合 STM32CubeMX 生成的 CMake 工程,可以做到编辑、编译、烧录、调试一条龙。

关键理解在于:CLion 不直接和芯片打交道,它只是一个前端。真正干活的是这三样:arm-none-eabi-gcc(交叉编译工具链)、CMake/Make(构建系统)、OpenOCD 或 st-flash(烧录调试器)。CLion 负责把这三样拼起来,并用图形化界面统一指挥。

5.2 从 CubeMX 到 CLion 的完整搭建步骤

这里要注意,STM32CubeMX 尽量用 6.x 以上的版本,新版本在 Project Manager 页面把 Toolchain 选项改成了 CMake,生成的工程里自带 CMakeLists.txt,CLion 可以直接打开。

按照这个流程操作:

  1. 在 CubeMX 里选择芯片型号,配置好时钟、外设和引脚。
  2. 菜单 Project → Generate Code,Toolchain 选 CMake,Toolchain location 选 arm-none-eabi-gcc 所在目录。
  3. 生成完成后,用 CLion 打开工程根目录,前提是 CLion 能识别出这是一份 CMake 工程。
  4. 在 Settings → Build, Execution, Deployment → Toolchains 里新增一个工具链,C Compiler 和 C++ Compiler 都指向 arm-none-eabi-gcc 的路径。
  5. 配置烧录。在 Settings → Build, Execution, Deployment → Embedded Development 里,指定 OpenOCD 路径和配置文件。如果你手头是 stlink 调试器,对应 interface 文件就是 stlink.cfg,芯片型号选择对应系列,比如 STM32F1 系列就是 stm32f1x.cfg。

之后可以直接点右上角的 Run 或 Debug。Run 会调用 OpenOCD 把固件烧到芯片里,Debug 会启动调试会话,在代码里设好断点,单步执行和查看变量都是图形化操作,体验比 Keil 舒服太多。

5.3 烧录和调试时的经验谈

嵌入式调试常见的问题是 OpenOCD 找不到设备或配置文件不匹配。第一次配之前,先在终端手动跑一次 OpenOCD 验证环境:

openocd -f interface/stlink.cfg -f target/stm32f1x.cfg

如果终端能正常输出 Info 级别的日志并等待连接,说明调试器驱动和芯片配置文件都没问题。要是提示找不到 cfg 文件,多半是 OpenOCD 安装目录里没有对应芯片的 target 文件,去 OpenOCD 官方脚本库下载对应文件放进 target 目录即可。

另外一个非常小的细节:CLion 的 Embedded 配置里可以选择 External GDB Server,如果你的调试器不是常见型号,直接用 OpenOCD 起服务,再把 GDB 指向本机 3333 端口,效果是完全可控的。配置对一次之后,整个团队都可以把这份方案复制走,比守着各家 IDE 的私有工程要省心得多。

6. 插件商店搜不到 Continue?手动安装才是正解

6.1 为什么搜索不到,不一定是网络问题

很多人在 CLion 的插件商店里搜 Continue 插件,结果一无所获,第一反应是“网络问题”。确实,JetBrains 插件仓库在某些网络环境下访问不稳定,请求超时会直接导致搜索结果为空。但还有一个很容易被忽略的原因:Continue 插件对 JetBrains 系列的兼容范围有限,如果你的版本过旧,插件仓库的元数据会直接把它过滤掉,搜索不到也不用奇怪。

先区分一下:CLion 本身的能力集中在 C/C++ 开发上,AI 辅助编码这种功能还是要靠第三方插件来增强。Continue 是最受关注的开源 AI 编程助手之一,官方支持 VSCode 和 JetBrains 全家桶,但 JetBrains 版本有兼容门槛,通常要求较新的 CLion 版本。如果你的 IDE 版本太老,搜索结果里不会出现它。

6.2 绕过商店,两步手动安装

既然商店搜不到,最稳定的办法就是手动安装。操作流程极简单,全网通用:

  1. 去 Continue 的 GitHub Releases 页面,下载和你的 CLion 主版本号匹配的 .zip 包。下载时认准文件名里的 idea 或 jetbrains 字样,别下成 VSCode 的 vsix 文件。
  2. 回到 CLion,打开 Settings → Plugins,点击右上角的齿轮图标,选择 Install Plugin from Disk...,选中刚下载的 zip,确认后重启 IDE。

重启后如果插件生效,通常会在右侧工具栏或菜单中出现 Continue 面板。如果装完没有任何变化,先检查版本号是否匹配。另外,能用商店尽量用商店,手动装插件最大的问题是依赖和版本不好控制,升级 IDE 后可能需要重新安装。

顺带分享几个我非常常用的 CLion 插件组合:VS Code Keymap(把 VS Code 快捷键搬到 CLion,迁移者福音)、Rainbow Brackets(括号高亮配色)、CodeGlance Pro(代码缩略图)、Material Theme UI(护眼主题)。这些基本都能在商店里搜到,商店没有就直接走手动安装的老路子。

7. 高频问题排查与实操避坑速查

7.1 高频问题速查表

整理了一份高频问题速查表,都是我实测过或身边同事踩过的坑:

问题常见原因解决方案
打开 sln 工程失败缺少 MSVC 工具链或 sln 依赖自定义 MSBuild Targets装 Visual Studio Build Tools;准备好接受 CMake 重写方案
中文输出乱码源码 UTF-8 与控制台 GBK 不一致设置 File Encodings 与 Console 编码为 UTF-8,必要时调用 SetConsoleOutputCP
插件商店搜不到 ContinueJetBrains 插件仓库访问不稳定,或 IDE 版本过旧从 GitHub Releases 下载对应版本 zip,手动安装
JNI 库加载报 UnsatisfiedLinkError位数不匹配或函数名不一致确认 64 位编译,重新 javac -h 生成头文件
调试 STM32 连不上开发板OpenOCD 配置缺失或驱动异常、cfg 文件没配对终端单独启动 openocd 排查,检查 stlink 驱动
CMake 构建时找不到头文件工具链为交叉编译链,但配置里选了宿主编译器在 Toolchains 中指向 arm-none-eabi-gcc,确认 CMake 工具链变量

7.2 几个值得分享的独家避坑技巧

最后,讲几个我实际操作中总结出来的经验,都是常规教程里不会细写的。

第一个,CLion 默认的堆内存上限可能不够大。打开一个大型 CMake 工程时,如果代码索引卡成幻灯片,去 Help → Change Memory Settings 里把堆内存调到 2GB 甚至更高,改完重启,索引速度提升非常明显。

第二个,CMake 工程如果怎么刷新都不更新,别怀疑人生,大概率是 CMake 缓存坏了。手动删除项目根目录下 cmake-build-debug 或对应构建目录,然后重新 Reload CMake Project。这个问题在频繁切换分支时特别容易出现,我已经形成肌肉记忆了。

第三个,CLion 的调试体验在 Linux 下比 Windows 更顺滑。Windows 调试器有时会遇到访问到 C/C++ 标准库内部实现的问题,如果只是为了看业务逻辑,建议调试配置里把 Show Standard Library Types 关掉,能少一半噪音。

最后再提醒一句关于版本管理的坑:CLion 新版本偶尔会调整 CMake 模板和默认 settings,团队协作时尽量统一 IDE 版本和 CMake 策略。配置文件可以导出,新人入职直接 Copy 一份 .idea 目录下的关键配置,能帮对方省掉半天折腾时间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询