# 基于 Clion 开发的 WorkFlow 汇总

项目的 IDE 五花八门,作为一个不太硬核的程序员,还是希望尽可能的简化开发流程,忽略琐碎问题,提高编码体验。下面简单介绍一下我目前基于 Clion 的工作流:

# Clion 相关配置

# 插件推荐

# 仿 vscode 插件,感觉就像是在用 vscode,0 成本的编辑器转换:

  • vscode 快捷键映射
    映射之后,全局搜索是会失效的,我这边改成了 atl + a
    此外自动格式化代码快捷键也被我修改为了 shift + f
    各位可以根据自己的习惯进行修改。

image-20240402102933218

  • vscode 主题模板

image-20240402102954527

# 汉化包

image-20240402103008360

# git 相关集成插件

image-20240402103024043

# proto 语法检查插件

image-20240402103038408

# ExcelReader xlsx 的阅读器

我的评价是:相比于 vscode 的 Office Viewer 全家桶,界面上有点小 low,但是搜索功能很在线(完爆 Office Viewer,我 1W 行的 excel 你只给我查第一页?
可惜的是 ExcelEditor 需要收费,因此目前只能看不能改。不过 ExcelReader 用的单独窗口进行预览,因此超级顺手!!!自带的窗口拆分~
image-20240402103054533
双击或者右键 Open As ExcelReader 打开 Excel:
image-20240402103115436

# 本地编译

由于 Clion 的提示,需要基于 CMake 生成的 MakeFile,远程编译虽然可以从远程拉取编译生成的 MakeFile 文件,但每次打开编辑器都要拉一下还是比较费时的不如本地来的实在,因此可以使用本地编译来提高效率,下面来介绍一下本地编译:

# 环境准备

由于在 Window 环境下编译是不区分大小写的,因此类似 #include <assert.h>#include <Assert.h> 系统是区分不了的。

建议新建一个目录,并通过管理员权限打开 PowerShell 设置区分大小写选项: fsutil.exe file setCaseSensitiveInfo <path> enable ,设置完毕后可以通过 fsutil.exe file queryCaseSensitiveInfo <path> 查看是否成功。

image-20240402103141418

如果不设置以上规则,本地编译后会有比较多的 error 提示,如果觉得不影响也可以跳过该步骤。

# 相关配置

文件 > 设置 > 构建、执行、部署 > 工具链

「工具链」选用 Cygwin 的,里面的 make gcc 等版本可以用 Cygwin 默认的。
image-20240402103222616

「CMake」配置一个本地的,构建类型 Debug,工具链用之前配好的,目录的话随意,但不要和远程编译的目录重了。
image-20240402103233902

手动执行一下小锤头
image-20240402103316440

完成后就可以体验本地开发了
image-20240402103336983

关于新增文件后导致无法识别问题
image-20240402103351194
由于 MakeFile 生成时并没有该文件所以才会提示这个,可以考虑刷新一下 MakeFile 缓存
image-20240402103403882

重新生成协议的时候可以考虑重新打开一次 Clion,因为基于现有缓存更新索引真的很慢~

# 远程开发 —— 同步修改 && 远程编译

# 同步修改

新增一个远程开发部署项,我这里单独新增了一个分组叫做远程开发,各位可以根据自己需求来分类。

image-20240402103419684

新增一个连接配置,并测试连接是否正常
image-20240402103445180

点击自动检测,获取根路径,也可以自行修改。
image-20240402103459073

配置映射关系

  • 本地路径表示本地的代码路径
  • 部署路径表示远程下的路径,绝对路径是「根路径 + 部署路径」,可以根据自己的配置进行调整

image-20240402103511965

可以新增一些不需要同步到远程的路径

image-20240402103522994

再配一下文件的同步规则,这里建议设置为保存后自动同步
image-20240402103535144

新增一个工具链,类型为远程主机

image-20240402103551364

测试连接是否正常
image-20240402103601594

配置 CMake 参数,新增一个 CMake 配置项:
image-20240402103657049

相关配置:

  • 构建类型设置为:Debug
  • 工具链选择之前配置好的「远程主机工具链」
  • 构建目录填 debugbuild

image-20240402103710150

在编辑器右上角设置默认的编译配置项,点击小锤头,就可以开始同步文件到远程,并进行编译了。
image-20240402103724570

题外话:本方案其实是给之前有远程编译习惯的开发者提供的可选项,本人还是习惯在远程手动执行编译脚本和转协议脚本。小伙伴们可以根据自己习惯来啦~

# 折叠代码块让阅读变得简单

对于代码行号很多的时候,让代码阅读变得更加优雅,不但可以提高编码效率,而且可以提高代码质量。

很长一段时间,我都是通过 Clion 左侧框架来查阅代码,效率也还可以,但是随着代码越写阅读,很多接口也长得很接近,为了区分私有公有等一些定义上的差异,往往经常需要在头文件和源文件之间反复横跳,Clion 对于代码解析本来就不是很快,这波更是雪上加霜:

正好之前用 VS 写 C# 的时候用到过一个折叠功能,就想着 Clion 大概率也有。果然不出意外,还真可以,像这样简单归类一下还挺方便,而且也能够用在单个函数内,对于很多行的函数,分步骤进行处理,并折叠起来,阅读也更清晰:
image-20240402103924653

下面是相关配置,有爱自取~

image-20240402103942965

/** region ## $DESC$ ## */
$SELECTION$
/** endregion */

image-20240402103958254

# 好用的自定义查询器

每次全局搜索协议的时候经常爆出很多 gen 目录下的文件,搜索一些常用接口如 Open,Close 等也会经常被 external 等外部库刷屏还是挺烦的,好在 Clion 可以设置查询路径范围,找某些特定内容就会快很多。
例如我这里配置了「协议」查找和「非生成文件」查找

配置也比较简单,自己设置搜索时需要包含的路径等即可:
image-20240402104054125

虽然很多编辑器查询都支持正则,但是能保存下来反复用的功能貌似只有 Clion 有,只能感叹 Clion 太细了,我哭死~

# 书签功能

这个功能一直都有,类似断点的方式在代码段进行标记,但之前标记的书签查看起来比较麻烦。

image-20240402104109621

CLion 2023.1 开始支持了新版 UI(虽然之前有 beta 版本,但是很卡),体验瞬间就提升了一个档次:

image-20240402104144498

# 好用的 TODO 功能

个人有时候看代码喜欢在可能需要加逻辑、有问题,待开发的地方打上 TODO 标记。Clion 在这点非常强大:

# 新增一个 todo 模板

image-20240402104158344

设置变量的默认值,这里我只需要一个日期
image-20240402104211650

设置模板应用范围
image-20240402104225004

之后就可以自动生成模板代码了
image-20240402104252163

image-20240402104302436

不仅仅是 todo 很多经常编写的代码也可以设置成模板,例如想用 iter 遍历对象每次都需要写 for xxx 总之开动自己想象~

# TODO 自定义筛选器

Clion 很贴心的提供了 TODO 筛选功能,可以很快的查看自己标记的 TODO,非常直观:

image-20240402104350681

新增一个筛选规则: \bTODO\b.*「rwbyguo」.* ,主要是用来匹配自己定义的 TODO
然后新增一个筛选器,并应用自己的筛选规则

image-20240402104529534

之后就可以通过切换筛选器来查看不同的筛选内容
image-20240402104357828

筛选出全部的 TODO:
image-20240402104405327

只筛选出自己的 TODO:
image-20240402104426119

# CLion 配置性能优化

官方对于 CLion 解析和语法分析慢的一些优化建议:https://www.jetbrains.com/help/clion/performance-tuning-tips.html

# Vscode gdb 远程调试

远程调试用的还是 VScode,因为 Clion 官方目前无法支持 attach 远程进程来进行调试,而 launch 模式下启动进程会有问题,因为我们进程启动依靠的是 tcm 来控制,因此无法用 Clion 单独启动某个进程来测试。

VScode 插件安装:
image-20240402104546753

launch.json 相关配置

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 附加",
            "type": "cppdbg",
            "request": "attach",
            "program": "/data/rwbyguo/trunk/server/run/as/bin/arenasvr", //改成自己的路径
            "processId": "${command:pickProcess}",
            "MIMode": "gdb",
            "logging": {
                "engineLogging": false
            },
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
    ]
}

点击(gbd 附加)选择需要 attach 的 pid 就可以了
image-20240402104605785

查看调用堆栈
image-20240402104734458

查看变量属性
image-20240402104727471

啥都好,看变量,调用堆栈都很方便,就是贼慢!!!:https://github.com/microsoft/vscode/issues/132025
不过最近社区也很多人遇到这个问题,官方还在想办法优化中 respect ~

# 总结

项目内有用 VS、VScode、Clion 等 IDE。但整体使用下来给我的感觉(纯个人观点,纯个人观点,纯个人观点,求生欲拉满):

# 开发体验(界面风格、各项操作、工具支持)

VScode > Clion >> VS

# 语法提示速度,单独拎出来因为真的很重要

VS > Clion >> VScode

# 远程开发对比

  • VScode:直接操作远程代码,更接近真实的开发情况,所见既所得
  • VS and Clion:操作本地代码再同步到远程,有点不太踏实的感觉

个人其实更偏向于 VScode,其内置的插件很多,功能也很强大。但是无法接受的就是高 CPU 和 内存 占用。导致开发机经常宕机,而且代码提示、全局收索速度极慢。因此只能放弃,期待哪天官方优化好吧。

Clion 相比于 VS 代码提示速度上稍慢一些,全局搜索速度快很多,插件功能多且很实用,因此最终选择了 Clion。

# 一些项目编码相关设置

# 花括号换行问题

全都设置为另起一行

image-20240402104704411

image-20240402104716947

# 新建的文件设置模板

官方自带的 IFNDEF ... ENDIF 很烦,可以统一改成 #pragma once
C 和 C++ 都改一下
image-20240402104657592

「包含」里面配置一下自己名字和日期~
image-20240402104651025