news 2026/6/25 4:06:41

Windows上配置C/C++开发环境(GCC与CMake)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows上配置C/C++开发环境(GCC与CMake)

开发工具

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的开发环境。

MinGW

MinGW是面向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窗口,比较烦人)

接下来在开始菜单(或者安装路径)打开UCRT64,MSYS2使用和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项目示例,虽然什么都不会执行。

更多内容可以参考官方文档。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 15:26:05

B站弹幕姬:如何解决直播间互动难题,实现自动化运营?

B站弹幕姬:如何解决直播间互动难题,实现自动化运营? 【免费下载链接】Bilibili_Danmuji (Bilibili)B站直播礼物答谢、定时广告、关注感谢,自动回复工具,房管工具,自动打卡,Bilibili直播弹幕姬(使…

作者头像 李华
网站建设 2026/6/11 12:27:04

MPC184数据包描述符硬件加速:IPSec/TLS性能优化实战

1. 项目概述:深入理解MPC184数据包描述符的硬件加速哲学如果你在开发网络设备,尤其是防火墙、VPN网关或者需要处理大量TLS/SSL流量的服务器,肯定对CPU被加密解密操作拖垮性能的场景深有体会。我当年在做一个千兆级IPSec VPN网关项目时&#x…

作者头像 李华
网站建设 2026/6/8 15:25:09

LPC55S3x内置运放PGA实战:从原理到代码实现传感器信号调理

1. 项目概述如果你正在用LPC55S3x这类MCU做传感器信号采集,比如热电偶、电桥或者微弱电流检测,大概率会遇到一个头疼的问题:传感器输出的信号太小,或者有共模噪声,直接扔给ADC精度根本不够看。传统做法是外挂一颗运放芯…

作者头像 李华