EAimTY的博客
一个没什么技术的开源爱好者,一个苦逼的学生狗。
首页
关于
主题
将 Atom 改造为 C/C++ 的 IDE
Oct 06, 2019

如果你符合以下这些特点,这篇文章会很有用:

  • 单纯喜欢Atom的人
  • 单纯觉得VS难用的人
  • 有洁癖,不愿使用闭源软件的人
  • 讨厌微软的人
  • 喜欢折腾的人(其实折腾Atom也不是非常难)

当然,即使你不属于上面这几类人,也应该体验一下使用Atom的感觉,因为只有对比过后才能知道哪个更适合自己。

最近在学校修cpp课程,授课老师要求用VS,然而我翻了一下教材,发现其实没有用VS的必要,所以准备把我一直在用的Atom改造为一个cpp的IDE。

成品可以实现C/C++程序的实时检查代码中的错误,可以一键编译,还可以和VS一样用图形化界面打断点、逐行运行来Debug。

Atom有如下几个有点,让它比VS高到不知道哪里去:

  • 开源,且跨平台,这意味着如果你是一个使用Atom的Linuxer,在某些情况下被迫要用Windows,你可以很简单地打包一份相同配置的Windows版Atom,即插即用
  • 高度可定制化,每个人的Atom都可以完全不一样
  • 原生高度集成图形化的Git
  • 基于Electron,运用了大量Web技术,原生对前端编写的支持优秀
  • 极度模块化,真正的Atom只是一个用来实现插件功能的核心,没有任何功能,全部功能都是由插件提供的
  • 庞大的社区,数不胜数的插件,与上一条搭配意味着Atom的改造难度极低,这让Atom可以轻松充当多面手,不只前端,C家族、Python等众多语言的IDE也可胜任,同时它还是一个优秀的Markdown编辑器。
  • 自从某次更新后,Atom的运行速度有了很大的改善。到现在,Atom已经是一个轻快的编辑器了。

什么?你说VS Code?那不就是微软给Atom披了个马甲吗?

准备原材料

即使不考虑Atom,想要编译、Debug C/C++程序,首选也一定是gcc、g++和gdb,所以我们要做的就是把Atom和上面三个程序结合起来,结合的媒介就是Atom的插件。
下面的操作中Mac OS的操作和Linux几乎一摸一样,假如你是睾贵的水果用户,可以直接参照Linux的操作步骤。

安装Atom

对于Linux,一般发行版的仓库都会有atom,就算没有,也可以去项目的Releases页下载对应版本,甚至可以直接下载打包好的压缩包,解压后运行主程序文件。

对于Windows,你可以选择去项目的Releases页下载对应的exe安装包,但安装过程中你无法选择安装路径,所以我一般会下载zip包直接解压使用。

安装gcc、g++和gdb

对于Linux,我想不用多说,大家都懂。

对于Windows,这里要用到MinGW,这是一个Windows下GNU家软件的安装器,使用起来非常方便。我们需要的是mingw32-gcc-bin、mingw32-gcc-g++-bin和mingw32-gdb-bin这三个软件包,其它依赖会自动下载。
MinGW的食用方法网上一搜一大把,我就不在赘述了。
注意MinGW只提供32位版的软件包,如果你有什么特殊需求或者是强迫症必须要64位版本的软件,可以使用Mingw-w64,道理都是一样的。
在安装过gcc、g++、gdb后,需要将MinGW安装目录下的bin文件夹(里面有一大堆可执行文件)添加到Windows的环境变量PATH中。环境变量的添加方法网上也有一大堆,不再重复。
添加到PATH后需要重启Windows以使做过的更改生效。

安装插件

下面的步骤都是所有平台通用的。

进入Atom的设置,进入插件查找安装选项卡,装上以下几个插件:

  • linter
  • linter-gcc2(原版linter-gcc停止开发了,这是另一位开发者接手后的版本)
  • gcc-make-run
  • dbg
  • dbg-gdb

确保以上插件全部安装成功后重启Atom,会弹出一些窗口让你安装这些插件的依赖,全部安装即可。

设置插件

打开插件管理面板,这里能看到你安装过的所有插件。

首先是linter-gcc2插件
需要在它的设置中打开Lint on-the-fly,这是实时查错功能。

之后是gcc-make-run
需要在它的设置中的编译参数(Compiler Flags)里增加-g参数,以使gdb可以正常debug编译好的binary文件。

在这里,对于Linux用户还有一步额外的操作。在Linux下,gcc-make-run默认调用的终端是xterm。我相信很大一部分Linuxer们都没有装这个又老又丑的终端,即使装了也大概率是因为某些依赖问题,不会日常使用。所以我们需要修改默认调用的终端。
gcc-make-run插件设置中的最后一项Terminal Start Command (only Linux platform)就是自定义终端调用命令,你可以查看你使用的终端的帮助或者问问“好男人”(man)来自行设置调用命令。
但问题来了,某些终端(例如我使用的xfce4-terminal)会在程序执行完后自动关闭终端窗口,你根本不知道发生了什么。在网上查找如何让终端保持开启的话,你会查到用read命令来等待用户指示。然而,我们来看看gcc-make-run的源码(在~/.atom/packages/gcc-make-run/lib/gcc-make-run.coffee):在buildRunCmd这一节中我们可以看到作者已经为Linux平台设置了程序运行完后执行read -n1 -p 'Press any key to continue...'命令等待用户操作,所以终端在运行完后直接消失应该是终端本身的问题,不知道是bug还是feature。
如果很不幸你的终端有这种情况,你有两种选择:

  • 直接修改gcc-make-run的代码,把原来的那条read去掉,用其他命令(比如用bash的-c参数之类的),或是写个无限循环的shell脚本在后面执行防止终端关闭。这不推荐,因为插件更新可能会覆盖你修改的文件(当然如果你愿意每次插件更新完后都改一遍代码,或是直接fork一份代码改完之后用apm装也没什么问题,但是这不麻烦吗...之后可能还要merge来merge去的...)
  • 再仔细看看终端帮助或是好男人,有没有参数可以让你的终端保持开启?一般来说都会有的,比如说我使用的xfce4-terminal就有-H这个参数可以让终端在执行完命令后保持开启。

以上就是改造的步骤,下面说一说如何使用。

快捷键

在这套配置中,默认下,F6键是编译并运行,F5键是打开Debug窗口,F9键是对选中的行打断点。

如何Debug?

首先,你要保证代码没有被linter查出错误,这是最基本的;
然后对着你想打断点的行的行数左侧点一下,出现的红色按钮就是断点标识,用F9键也是同样的效果;
之后,按下F6键,也就是编译出代码的可执行文件;
紧接着在左侧Tree View中右键点击编译好的可执行文件,选择Debug this File(注意是Debug可执行文件,而不是c/cpp文件);
最后点击右下角的Debug按钮,就能开始Debug了。

同时,dbg插件还可以保存断点之类的调试信息,按钮就在Debug按钮的下方。

最后推荐几个Atom插件

minimap

这可以说是Atom的必装插件之一,提供整个文件的缩略图预览。

autocomplete-clang

依赖于autocomplete-plus(atom自带),且系统中需要有clang软件包。
可以提供非常强大的自动补全功能。

autocomplete-paths

顾名思义,是一个自动补全path的插件,也依赖于autocomplete-plus。

atom-beautify

只需按一下快捷键,自动规范格式化你的代码。
Beautify C语言依赖于Uncrustify,但安装配置起来很简单。

activate-power-mode

越写越爽

atom-miku

(引述原作者的话:)

  • 做工粗糙
  • 仅供娱乐
  • 没有卵用

(逃

respond-post-218
乌黑密发
Oct 07, 2019, 18:07

dalaotql

Oct 13, 2019, 20:29

用着 vscode 写 C++ 的路过

Feb 11, 2020, 17:53

同主楼

源氏不想拔刀
Feb 08, 2020, 21:10

大佬,请问在装了这些插件之后,应该怎么实现同时编译多个文件?

Feb 09, 2020, 04:04

“同时编译多个文件”指的是什么?可能你需要的是cmake,atom有个配套的插件build-cmake你可以试一试。
另外还有Atom IDE可以提供类似IDE的功能。

源氏不想拔刀
Feb 10, 2020, 21:05

感谢大佬!我研究研究!

添加新评论

请填写称呼
请填写合法的E-mail地址
请填写合法的网站地址
请填写内容