【在主画面加入捷径】
       
【选择语系】
繁中 简中

[Windows] 求生手册:选择 C 或 C++ IDE

【赞助商连结】

    前言

    本来 IDE (整合式开发环境) 的选择是个人偏好,但 C 和 C++ 的生态圈会和 IDE 起微妙的交互作用,这是因为 C (或 C++) 没有统一的工具链,由各个系统自行负责实现相关工具。在大专院校的资讯相关科系中,C (或 C++) 仍然是大部分学校的必备教学工具;许多学生用习惯了图形接口软件,突然要转向 GCC、Vim、Make 等硬派的命令行工具,往往会水土不服,因此笔者在此介绍一些 IDE 相关的讯息,供需要的读者参考。

    C 和 C++ 生态圈由于历史因素,很多东西没有标准化,这在我们前文中有讨论过,有兴趣的读者可阅读笔者先前的文章。理论上,IDE 和语言是分开的,IDE 是在撰写程序代码的过程中加入一些增加工作效率的工具,在实际编译程序时其实仍是系统中的编译器在编译程序代码。由于 C 和 C++ 的生态圈不像 Java 或 Python 那么标准化,IDE 在设计时,必需将这些要素考虑进去;因此,不同项目适合的 IDE 可能会有所不同。

    Visual Studio

    号称地球上最强的 IDE,微软的重量级产品。虽然整个生态圈,包括编译器 (MSVC)、自动编译工具 (MSBuild)、套件管理 (NuGet 或 vcpkg) 等都和类 Unix 系统上的自由软件不兼容,但微软的市占率够高,倒也自成一套标准。许多函式库也会附 Visual Studio 可用的项目设定档,只是自由软件界的函式库通常不会有 Visual Studio 项目设定档,需手动汇入。

    Visual Studio 的功能很多,用熟的话撰码效率很好;但 Visual Studio 最大的问题在于不同版本间的兼容性问题,很多旧项目都会刻意守在某个旧版的 Visual Studio,因一旦更新项目版本,就没办法自动转回去。另外,不同版本的 Visual Studio 的函式库也不完全兼容,所以才需要安装不同版本的可转散发套件。

    Eclipse

    Java 社群中相当知名的 IDE,透过 plugins 可支援包括 C 或 C++ 等多种语言,支援 C/C++ 的 plugin 称为 Eclipse CDT。Eclipse 本身没有自带 C 和 C++ 编译器,但支援 Gygwin 和 MinGW 编译系统。Eclipse 使用自己特制的项目设定档。

    Netbeans

    同样是 Java 社群中相当知名的 IDE,透过 plugins 可支援 C 或 C++ 等多种语言。Netbeans 本身没有自带的编译器,但支援 Cygwin、MinGW、Clang 等第三方编译器。Netbeans 会自动生成 Makefile,使用者不同自己写 Makefile;不过,Netbeans 生成的 Makefile 会引入一些特有的设定,通用性没有很好。

    目前 Windows 上的 Netbeans 8.x 版本有一个小 bug,那就是不能搭配 MSYS2,只能搭配原本的 Msys 或其他的编译器 (详见这里)。

    Code::Blocks

    Code::Blocks 是一套跨平台的 C、C++、Fortran IDE,本身虽不绑定特定的 C 或 C++ 编译器,支援许多 C 或 C++ 编译器,也有附带 MinGW 的版本。但笔者不建议直接用 Code::Blocks 内附的 MinGW,较建议用 MSYS2,再将编译器的路径指向 MSYS2 所在的位置。因 MSYS2 的功能较完整。

    CLion

    这套 IDE 是 JetBrains 的商业软件,有在持续维护及更新。CLion 本身不绑定特定的 C 和 C++ 编译器,但使用 CMake 做为自动化设定档的格式;JetBrains 的一些使用者希望 CLion 能够支援 Make,但 JetBrains 因跨平台考量,目前暂不支援 Make。由于 CMake 是最流行的跨平台自动编译软件,如果愿意花点时间学 CMake,倒是可以考虑使用 CLion。

    KDevelop

    KDevelop 是 KDE 桌面环境的 IDE,原本运行在 GNU/Linux 等类 Unix 系统,但 Windows 上也有移植品。其实 KDevelop 不算特别强大,但有针对 Visual C++ 和 MinGW 配置设定,也是少数可以直接吃 Make 和 CMake 设定档的 IDE,如果项目同时需要在 Windows 和 GNU/Linux 等平台间移动的话,可以考虑使用这套 IDE。

    不应该再用 Dev-C++ 了

    其实 Dev-C++ 不是什么特别强大的 IDE,但这套 IDE 在大专院校间的流传程度,己经到了都市传说的程度;甚至一些早期的中文书籍,也主打 Dev-C++ 程序设计,但书的内容就是很普通的 ANSI C 程序而已。

    Dev-C++ 的问题在于这个 IDE 本身有很长一段时间未更新,使用时可能会产生一些怪怪的 bug,但 C 或 C++ 的初学者无法辨识这个 bug 是来自程序代码、IDE 还是编译器,只是徒增挫折感。早期 Visual C++ Express 限制太多,才会有一些使用者转而使用 Dev-C++,现在 Visual Studio Community 功能应该很够了,不一定要坚守这套时代的产物。Dev-C++ 背后使用 MinGW,但使用自己特殊的自动编译设定档。

    该选那个 IDE?

    由于 C 和 C++ 生态圈的多样性和复杂性,没有一套 IDE 适用于所有的情境。在项目一开始时,就要想好项目的发布目标,如果项目发布目标是 Windows 程序,无疑地,Visual Studio 是最佳解。如果想要让项目跨平台,就要选择跨平台的工具,像是 GCC、Make、CMake 等,这时候,使用一个跨平台的 IDE,像是 Code::Blocks 或 CLion 或 KDevelop,可以减少重新学习工具的成本。

    对于初学 C 或 C++ 的程序人来说,除了 IDE 本身外,也要考量语言标准。由于 Visual C++ 对 C 标准相对落后,可以考虑 MinGW 搭配一种跨平台 IDE。但学校只用 ANSI C 的话,继续使用 Visual Studio 也无妨。相对来说,Visual C++ 对 C++ 则支援良好,直接用 Visual Studio 就可以了,除非有其他考量。

    【赞助商连结】
    TAGS: C, C++, IDE, MINGW, MSYS, WINDOWS