)
开发工具C/C与其他语言不同的一点是它的语言标准制定与实现是分离的C/C语言标准都是由ISO国际标准化组织与IEC国际电工委员会制定的而其它语言比如Java、Python的标准是由某个具体的公司或组织制定的Java由Oracle公司主导Python由Python软件基金会主导。说那么多是因为语言标准的制定与实现的分离带来了一个问题那就是C/C有多个编译器主流的有GCC、Clang、MSVC还有像Intel C、Nvidia nvcc之类的编译器更糟糕的是它们的编译产物并不兼容因为它们各自实现了一套标准库。所以说不同的编译器选择配置开发环境的步骤也不一样因为历史原因GCC更倾向于GNU/Linux生态Clang好像在macOS用的比较多MSVC是微软的当然绑定Windows。不过GCC与Clang都是跨平台的Windows上也能用。所以接下来以GCC为例介绍一下如何在Windows上配置GCC的开发环境。MinGWMinGW是面向Windows的极简GNU工具集把GCC移植到了Windows上有两种方式可以获得方案一Github在预编译二进制仓库的Release页面可以直接获取已经编译好的工具链打开它你能看到很多文件根据下面的表格选择合适的就行i68632位系统x86_6464位系统posixposix线程标准win32win32线程mcf轻量精简线程模型dwarf适用于32位的异常模型sehWindows结构化异常处理msvcrt旧版C运行时ucrt通用C运行时下载下来之后解压的你喜欢的位置然后打开设置-系统-关于-高级系统设置会弹出UAC选择是就能进入系统属性-高级窗口然后打开环境变量当然另一种办法是每次都通过完整路径调用gcc这样如果你需要安装多个gcc就不会冲突接下来这个窗口分为用户级与系统级两部分如果你的电脑是多用户且希望所有用户都能共享同一份GCC那就选择系统级否则选择用户级。找到一个叫Path选择编辑然后新建然后在新的一项哪里粘贴你的MinGW的bin文件夹的完整路径。方案二使用MSYS2另一种更简单的方法是从MSYS2安装MSYS2是一个强大的包管理器可以安装很多库只需打开网站选择msys2-x86_64-20260322.exe点击下载即可。运行会弹出安装界面选择一个你希望的路径然后安装就行。尽量不要选择Program Files与Program Files (x86)这两个路径受系统保护如果你需要频繁通过MSYS2安装库每次都会弹出UAC窗口比较烦人接下来在开始菜单或者安装路径打开UCRT64MSYS2使用和Arch Linux一样的包管理器pacman如果你用过Arch Linux那就能很快上手反过来也一样。输入pacman -Syu会同步最新版库的索引然后弹出是否下载输入y按回车就行一般来说安装完成后会问你是否重启输入y再打开就完成了”系统更新“因为Arch Linux是滚动发行版MSYS2也一样可以通过pacman给自己升级然后再输入一遍pacman -Syu就会开始更新其它库因为上一次更新的是”系统库“结束后输入pacman -S mingw-w64-ucrt-x86_64-toolchain会弹出很多库默认全选即可然后安装安装结束后输入g --version如果输出一长串东西 就安装成功了。接着只要像方案一一样加入环境变量即可注意MSYS2的部分库会自动安装python如果你系统也安装了python可能会调用错误的python需要调整环境变量的顺序构建工具这样就算是完成了安装但是接下来还有个问题那就是对于一个几十万上百万行的项目它的构建流程可能非常复杂而且需要引入各种外部库这个时候直接调用gcc进行构建就显得很麻烦所以需要构建工具。用的很广泛的构建工具就是CMake了在下载页面找到你需要的版本进行安装即可。如果你下载的是Installer.msi文件那么它应该会自动加入环境变量如果没有就按照上面的方法配置环境变量。当然另一种方法是通过MSYS2安装只需要输入pacman -S ucrt64/mingw-w64-ucrt-x86_64-cmake ucrt64/mingw-w64-ucrt-x86_64-cmake-gui就会安装CMake和CMake的GUI界面GUI界面相对于命令行来说更加容易上手。使用CMake现代CMake引入了CMakePresets.json虽然不是必须的但是可以用来统一配置以下是一个简单的示例{ version: 6, configurePresets: [ { name: debug, displayName: Debug, description: Debug build configuration, generator: Ninja, binaryDir: ${sourceDir}/build/debug, cacheVariables: { CMAKE_BUILD_TYPE: Debug } } ], buildPresets: [ { name: debug, configurePreset: debug } ] }注意我这里用的构建工具是Ninja如果你也想用Ninja请在MSYS2里执行pacman -S ucrt64/mingw-w64-ucrt-x86_64-ninja。使用CMake必须要的就是CMakeLists.txt文件它用来描述你所希望的构建流程。顶层必须有一行cmake_minimum_required(VERSION 3.30)指定了CMake的最低版本。第二行是project(HelloWorld)它指定了项目的名称。cmake_minimum_required(VERSION 3.30) project(HelloWorld)这就是一个最简单的CMake项目示例虽然什么都不会执行。更多内容可以参考官方文档。