当前位置: 首页 > article >正文

Windows下通过MSYS2快速部署CMake与MinGW开发环境

1. 为什么选择MSYS2搭建开发环境在Windows下开发C/C项目时环境配置往往是第一个拦路虎。传统方法需要单独安装MinGW、CMake等工具手动配置环境变量过程繁琐且容易出错。而MSYS2提供了一个开箱即用的解决方案它集成了Pacman包管理器类似Linux的apt/yum可以一键安装所需工具链。我最初接触MSYS2是因为需要编译一些开源库。当时尝试过直接使用MinGW-w64但依赖管理让人头疼。后来发现MSYS2不仅能自动解决依赖关系还能保持各组件版本兼容性。实测下来从零开始到编译第一个Hello World程序整个过程不超过15分钟。MSYS2另一个优势是它的隔离性。所有工具都安装在独立目录中不会污染系统环境。这对于需要维护多个项目不同工具链版本的情况特别有用。比如你可以同时安装gcc 10和gcc 12通过不同终端切换使用。2. 安装前的准备工作2.1 硬件与系统要求虽然MSYS2对硬件要求不高但建议至少满足4GB以上内存编译大型项目时更吃资源10GB可用磁盘空间基础安装约2GB后续安装工具链会增加Windows 10或11系统Win7也能运行但官方已不再支持2.2 下载MSYS2安装包官方推荐从清华镜像站下载最新安装包https://mirrors.tuna.tsinghua.edu.cn/msys2/distrib/x86_64/msys2-x86_64-latest.exe这里有个小技巧下载完成后先验证SHA256校验值。我遇到过因网络问题导致安装包损坏的情况执行以下命令校验certutil -hashfile msys2-x86_64-latest.exe SHA256将输出结果与官网公布的校验值对比。3. 安装与基础配置3.1 安装过程详解运行安装程序时建议选择非系统盘目录如D:\dev\msys64。注意路径不要包含中文或空格否则可能导致某些工具异常。安装时勾选创建开始菜单快捷方式这会生成三个重要终端入口MSYS2 MSYS纯MSYS环境MSYS2 MinGW 64-bit推荐使用MSYS2 UCRT64-bit新版Windows兼容安装完成后不要立即关闭窗口系统会自动初始化基础环境。我第一次安装时直接点了完成结果后续使用遇到各种奇怪问题。3.2 配置国内镜像源打开安装目录下的etc\pacman.d\mirrorlist.msys文件将清华源移到最前面## 清华大学镜像站 Server https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/然后执行以下命令更新包数据库pacman -Syu这个步骤可能会提示需要关闭终端按照提示重新打开终端再次运行即可。我遇到过更新中途卡死的情况这时需要手动删除/var/lib/pacman/db.lck文件后重试。4. 安装开发工具链4.1 安装MinGW-w64工具集在MinGW 64-bit终端中执行pacman -S --needed base-devel mingw-w64-x86_64-toolchain这会安装gcc、g、gdb等全套工具。--needed参数可以避免重复安装已有组件。安装完成后验证gcc版本gcc --version如果看到类似gcc (Rev10, Built by MSYS2 project) 12.2.0的输出说明安装成功。4.2 安装CMakeMSYS2仓库中有两个CMake版本msys/cmake运行在MSYS环境mingw-w64-x86_64-cmake原生Windows程序推荐安装后者pacman -S mingw-w64-x86_64-cmake验证安装cmake --version正常应该输出类似cmake version 3.26.3的信息。如果提示命令未找到检查是否在MinGW终端中执行。5. 环境变量配置5.1 永久添加环境变量虽然可以在MSYS2终端中临时设置PATH但更推荐修改系统环境变量右键此电脑→属性→高级系统设置→环境变量在系统变量中找到Path添加D:\dev\msys64\mingw64\bin D:\dev\msys64\usr\bin有个常见坑点Path中多个MinGW路径冲突。建议检查是否已有其他MinGW路径必要时将其移除。5.2 验证环境配置新建cmd窗口执行where gcc where cmake应该分别输出MSYS2安装路径下的程序位置。如果显示多个结果说明存在环境冲突。6. 创建第一个CMake项目6.1 项目结构准备创建如下目录结构demo_project/ ├── CMakeLists.txt └── src/ └── main.cppCMakeLists.txt内容cmake_minimum_required(VERSION 3.12) project(HelloWorld) set(CMAKE_CXX_STANDARD 17) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) add_executable(hello_world src/main.cpp)main.cpp内容#include iostream int main() { std::cout Hello from MSYS2! std::endl; return 0; }6.2 构建与编译在项目根目录下执行mkdir build cd build cmake -G MinGW Makefiles .. cmake --build .如果一切顺利会在build目录生成hello_world.exe。执行它应该能看到输出结果。我第一次运行时遇到了CMAKE_MAKE_PROGRAM not found错误原因是没正确设置环境变量。7. 常见问题排查7.1 编译时报错找不到头文件这种情况通常是PATH配置有问题。检查是否在正确的终端MinGW 64-bit中操作执行echo $PATH查看是否包含mingw64路径尝试完全关闭终端重新打开7.2 CMake生成器选择使用cmake -G查看可用生成器列表。在MSYS2环境下常见的有MinGW MakefilesMSYS MakefilesNinja如果项目需要跨平台推荐使用Ninjapacman -S mingw-w64-x86_64-ninja cmake -G Ninja ..7.3 调试技巧安装gdb调试工具pacman -S mingw-w64-x86_64-gdb调试时可能会遇到Python脚本错误这是路径转换问题导致的。解决方法是在gdb初始化文件~/.gdbinit中添加set startup-with-shell off8. 进阶配置建议8.1 集成到VS Code安装C/C扩展后配置tasks.json{ version: 2.0.0, tasks: [ { label: build with CMake, type: shell, command: cmake --build build, group: build, problemMatcher: [$gcc] } ] }8.2 安装其他开发工具常用工具推荐# 代码格式化工具 pacman -S mingw-w64-x86_64-clang-format # 构建工具 pacman -S mingw-w64-x86_64-make # 调试工具 pacman -S mingw-w64-x86_64-gdb8.3 管理多个工具链通过修改/etc/profile可以快速切换不同工具链export PATH/mingw64/bin:$PATH # 切换到MinGW64 # 或者 export PATH/ucrt64/bin:$PATH # 切换到UCRT64记得在修改后执行source /etc/profile使配置生效。我在处理一些老旧项目时这个技巧帮了大忙。

相关文章:

Windows下通过MSYS2快速部署CMake与MinGW开发环境

1. 为什么选择MSYS2搭建开发环境 在Windows下开发C/C项目时,环境配置往往是第一个拦路虎。传统方法需要单独安装MinGW、CMake等工具,手动配置环境变量,过程繁琐且容易出错。而MSYS2提供了一个开箱即用的解决方案,它集成了Pacman包…...

南北阁Nanbeige 4.1-3B入门必看:纯本地运行、无网依赖、4GB显存友好部署指南

南北阁Nanbeige 4.1-3B入门必看:纯本地运行、无网依赖、4GB显存友好部署指南 想体验一个能流畅对话、还能“看见”它思考过程的AI助手吗?今天要介绍的南北阁Nanbeige 4.1-3B,就是一个让你在普通电脑上就能跑起来的国产小模型。它只有30亿参数…...

Ubuntu 20.04下Anaconda3安装避坑指南:从下载到环境配置全流程

Ubuntu 20.04下Anaconda3安装避坑指南:从下载到环境配置全流程 在数据科学和机器学习领域,Anaconda已经成为Python环境管理的标准工具之一。对于Ubuntu 20.04用户来说,虽然Anaconda的安装过程看似简单,但实际操作中往往会遇到各种…...

揭秘视频修复黑科技:3步轻松拯救损坏的MP4文件

揭秘视频修复黑科技:3步轻松拯救损坏的MP4文件 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾经遇到过这样的情况:珍贵的旅行回忆、…...

猫抓浏览器扩展:如何快速提取网页视频和音频资源

猫抓浏览器扩展:如何快速提取网页视频和音频资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch&#xff0…...

3分钟上手Nebula Console:图数据库管理的终极命令行工具指南 [特殊字符]

3分钟上手Nebula Console:图数据库管理的终极命令行工具指南 🚀 【免费下载链接】nebula-console Command line interface for the Nebula Graph service 项目地址: https://gitcode.com/gh_mirrors/ne/nebula-console Nebula Console是NebulaGra…...

Noto字体:全球多语言字体解决方案的全面实战指南

Noto字体:全球多语言字体解决方案的全面实战指南 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 在数字时代,文字显示问题常常困扰着全球用户。当系统无法正确渲染…...

Transmission终极指南:为什么这款开源BT客户端是下载爱好者的最佳选择

Transmission终极指南:为什么这款开源BT客户端是下载爱好者的最佳选择 【免费下载链接】transmission Official Transmission BitTorrent client repository 项目地址: https://gitcode.com/gh_mirrors/tr/transmission 还在为BT下载速度不稳定、界面复杂难用…...

Z-Image-Turbo文生图神器实测:输入文字秒出电影级画质

Z-Image-Turbo文生图神器实测:输入文字秒出电影级画质 你是否曾经想象过,只需输入一段文字描述,就能在几秒钟内获得一张电影级画质的高清图像?这不再是科幻电影中的场景,而是Z-Image-Turbo极速云端创作室带来的现实体…...

3分钟快速上手:DLSS Swapper终极指南 - 免费提升游戏画质与性能

3分钟快速上手:DLSS Swapper终极指南 - 免费提升游戏画质与性能 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为游戏玩家设计的实用工具,能够让你轻松管理、下载和替换游…...

1-8章数据可视化分析系统

Python 大数据分析与挖掘实战(1-8 章)可视化学习平台 — 代码细分精讲 本平台基于 Streamlit 构建,专为《Python 大数据分析与挖掘实战》1-8 章课程设计。功能包含:自动加载教材代码、在线运行、逐行解析、多语言切换、深色模式、…...

Gemma-3-12B-IT部署教程:防火墙/端口/日志排查常见问题解决手册

Gemma-3-12B-IT部署教程:防火墙/端口/日志排查常见问题解决手册 1. 项目简介与核心价值 如果你正在寻找一个性能强劲、部署友好,并且能通过网页直接对话的开源大语言模型,那么Gemma-3-12B-IT绝对值得你花时间了解一下。简单来说&#xff0c…...

普惠不是简化:从三大基础理论推导非技术用户的独立AI协作路径

普惠不是简化:从三大基础理论推导非技术用户的独立AI协作路径 摘要 当前AI普惠领域普遍陷入“简化版误区”:行业将非技术用户的AI工具定义为“技术用户IDE的降维简化版”,通过砍掉高级功能、简化操作界面实现所谓的“普惠”,本质仍沿用技术用户的协作逻辑,始终无法解决非…...

Adobe Illustrator脚本套件:数字化转型利器实现90%设计效率提升与成本优化

Adobe Illustrator脚本套件:数字化转型利器实现90%设计效率提升与成本优化 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 在数字化设计时代,Adobe Illustra…...

3步解决iCloud激活锁难题:AppleRa1n工具完全指南

3步解决iCloud激活锁难题:AppleRa1n工具完全指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否遇到过这样的情况:购买了一台二手iPhone,却发现设备被iCloud…...

终极QQ聊天增强指南:10个必备功能深度解析

终极QQ聊天增强指南:10个必备功能深度解析 【免费下载链接】QAuxiliary QNotified phoenix - To make OICQ great again 项目地址: https://gitcode.com/gh_mirrors/qa/QAuxiliary QAuxiliary是一款强大的开源Xposed模块,专门为QQ和TIM用户提供全…...

Nunchaku FLUX.1 CustomV3实操手册:自定义workflow添加ControlNet线稿引导节点方法

Nunchaku FLUX.1 CustomV3实操手册:自定义workflow添加ControlNet线稿引导节点方法 1. 认识Nunchaku FLUX.1 CustomV3 Nunchaku FLUX.1 CustomV3是一个基于Nunchaku FLUX.1-dev模型的文生图工作流程,它通过整合FLUX.1-Turbo-Alpha和Ghibsky Illustrati…...

TsubakiTranslator:Galgame实时翻译完整指南与终极方案

TsubakiTranslator:Galgame实时翻译完整指南与终极方案 【免费下载链接】TsubakiTranslator 一款Galgame文本翻译工具,支持Textractor/剪切板/OCR翻译 项目地址: https://gitcode.com/gh_mirrors/ts/TsubakiTranslator 还在为语言障碍而无法畅玩心…...

无源晶体振荡器-晶振

无源晶体振荡器-晶振 晶振 晶振(Crystal Oscillator), 全称是石英晶体振荡器, 在电子领域, 它通常被形象地比作电子设备的 心脏 或节拍器. 核心原理——压电效应 (Piezoelectric Effect) 石英晶体(Quartz)有一种非常奇妙的物理特性: 形变生电: 如果在物理上挤压或拉伸它, 它…...

Nat Neurosci:当神经元“自己选图”——灵长类视觉系统如何在纹理与物体之间动态寻找最优表征

视觉神经元究竟“喜欢”什么样的图像?这个问题看似简单,却困扰了视觉神经科学几十年。对于初级视觉皮层(V1)的神经元,我们已经知道它们偏好边缘、方向、空间频率等较为简单的特征;但越往高级视觉区域走&…...

如何在macOS上免费制作Windows启动盘:WinDiskWriter终极指南

如何在macOS上免费制作Windows启动盘:WinDiskWriter终极指南 【免费下载链接】windiskwriter 🖥 Windows Bootable USB creator for macOS. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. 👾 UEFI & Le…...

embeddinggemma-300m效果展示:新闻标题跨语言语义相似度匹配实例

embeddinggemma-300m效果展示:新闻标题跨语言语义相似度匹配实例 1. 引言:当AI能理解不同语言的新闻时 想象一下这个场景:你是一位市场研究员,需要追踪全球社交媒体上关于某个产品的讨论。你可能会看到英文的“New smartphone l…...

Windows终极解决方案:3步快速配置Coolapk-Lite UWP客户端,告别安卓模拟器

Windows终极解决方案:3步快速配置Coolapk-Lite UWP客户端,告别安卓模拟器 【免费下载链接】Coolapk-Lite 一个基于 UWP 平台的第三方酷安客户端精简版 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-Lite 还在为在Windows电脑上访问酷安社…...

Qwen2.5-VL-7B-Instruct效果展示:UI原型图→前端代码生成示意

Qwen2.5-VL-7B-Instruct效果展示:UI原型图→前端代码生成示意 1. 模型能力概览 Qwen2.5-VL-7B-Instruct作为Qwen家族的最新视觉-语言模型,在UI原型图识别和前端代码生成方面展现出令人印象深刻的能力。这个模型不仅能准确理解界面设计元素,…...

基于异步日志的存储系统 步骤二(文件输出与滚动日志实现详解)

引言 回顾上一节:同步日志器的核心架构(LogLevel、LogMessage、Logger、LogFlush)。 本节目标:将日志持久化到文件,支持自动滚动(按大小切割)。 设计思路 1. 文件输出(FileFlush…...

分布式推荐系统架构解析:Gorse的设计原理与实现机制

分布式推荐系统架构解析:Gorse的设计原理与实现机制 【免费下载链接】gorse AI powered open source recommender system engine supports classical/LLM rankers and multimodal content via embedding 项目地址: https://gitcode.com/gh_mirrors/go/gorse …...

如何快速提取Godot游戏资源:5步掌握PCK文件解包终极指南

如何快速提取Godot游戏资源:5步掌握PCK文件解包终极指南 【免费下载链接】godotdec An unpacker for Godot Engine package files (.pck) 项目地址: https://gitcode.com/gh_mirrors/go/godotdec 你是否曾经好奇Godot游戏中的精美资源是如何打包的&#xff1…...

FLUX.1-dev FP8:让普通显卡也能跑专业级AI绘画模型

FLUX.1-dev FP8:让普通显卡也能跑专业级AI绘画模型 【免费下载链接】flux1-dev 项目地址: https://ai.gitcode.com/hf_mirrors/Comfy-Org/flux1-dev 还在为AI绘画的高显存需求而发愁吗?现在,你的游戏显卡也能流畅运行专业级图像生成模…...

嵌入式显示革命:如何用Adafruit_SH1106库征服OLED屏幕开发的三大挑战

嵌入式显示革命:如何用Adafruit_SH1106库征服OLED屏幕开发的三大挑战 【免费下载链接】Adafruit_SH1106 Adafruit graphic library for SH1106 dirver lcds. 项目地址: https://gitcode.com/gh_mirrors/ad/Adafruit_SH1106 你是否曾为嵌入式项目中的显示功能…...

UR5机械臂避障实战:如何用包围盒快速过滤点云(附D435i/Kinect2配置模板)

UR5机械臂点云避障实战:包围盒滤波与多传感器适配指南 在工业自动化与机器人应用领域,UR5协作机械臂因其灵活性和安全性成为中小型工作单元的热门选择。但当机械臂需要与环境动态交互时,如何准确识别有效障碍物、过滤机械臂自身点云成为关键挑…...