2022年在windows上开发cpp

2021年12月CLion发布了2021.3版本,两个功能极大降低了windows平台进行环境搭建的成本:一是内置mingw,二是支持docker作为toolchain。

更新前

一台普通windows,安装 clion 是无法使用的,因为它不提供编译环境,非常不友好,而且平时既要编译exe、又要编译 elf,很烦。有以下四种解决方案:

  • 方法一:
    clion 可以使用 VS 的工具链进行开发。需要使用 VisualStudio Installer,安装宇宙第一IDE和对应的SDK 。众所周知,这个全家桶实在是太大太重了,我不爱用 VS,只是为了它的工具链,这样太麻烦。
  • 方法二:
    自己安装 mingw,在 clion 里配置 toolchain 为 mingw。安装过程实很难受,可配置的地方较多,还有个很奇怪的 shell,我也不爱用。
  • 方法三:
    直接使用 wsl,clion的 toolchain 支持 wsl。但只能使用 wsl2、无法使用 wsl1,clion 有 bug,对 wsl1 的文件系统的软连接访问时会抽风。但我不爱用 wsl2。
  • 方法四:
    通过 ssh+wsl1 的方式使用,clion 的 toolchain 支持使用 ssh 远程开发。但有缺点,开机时wsl1属于关闭状态,需要主动开个 wsl 才能开起来,然后才能用 ssh 连入,wsl 本身不会触发linux 的开机启动项,只能把 sshd 的开启写在 bashrc 里面,非常丑陋。
    而且 ssh 经常有同步问题,有些文件改动了但没有被 transform 过去,刷新项目文件的缓存很头疼,刷新系统自带 headers 的缓存也很头疼。

即便如此,因为我比较依赖 wsl1,所以我一直在使用方法四。

内置 mingw

其实是对方法二的增强,以前需要用户自行安装 mingw,手动配置文件位置。现在全新的计算机,下载安装新版本clion后,可以直接编译运行一个 hello world,应对一些小型验证性的工作非常好。以后编exe 基本就用它了。

如图所示。

使用 docker

这是一种全新的开发方式,体验下来很友好,可以在 windows 上进行 linux 开发,参考链接 https://www.jetbrains.com/help/clion/2021.3/clion-toolchains-in-docker.html

整个流程大致就是,安装 docker(需要使用 wsl2 方式,不要使用 hyper-v),先构建一个带有各种工具的 docker image,然后在 clion 里配置,使用 docker 作为 toolchain。

clion会频繁地创建容器、运行片段编译命令、保存结果、删除容器,可能由于 docker 的性能实在是太好了,这种开销都能忍。

如图所示,使用 docker,干净又卫生,以后编elf基本就用它了。

总结

经历过的老版本配置过程的人可能会有深刻的感受,clion这两个功能,保持环境的清洁性,配置更加便捷,属实是良心的大更新,强烈建议进行迁移。