如何在VSCode中搭配MSYS2 UCRT64使用g++而非VS的cl.exe编译C++项目
如何在VSCode中搭配MSYS2 UCRT64使用g而非VS的cl.exe编译C项目
嘿,我看你已经搞定了VSCode、MSYS2 UCRT64的安装,甚至还在CMake配置里尝试指定编译器了,这就成功一半啦!下面我给你把整个流程捋顺,确保你能稳稳用MSYS2里的g替代VS自带的cl.exe来编译你的C项目~
第一步:完善CMakeLists.txt配置
你已经写了核心的编译器指定代码,我帮你补全下,让CMake能更顺畅地识别工具链:
cmake_minimum_required(VERSION 3.10) # 明确指定C/C++编译器为MSYS2 UCRT64下的版本 set(CMAKE_C_COMPILER "D:/msys64/ucrt64/bin/gcc.exe") set(CMAKE_CXX_COMPILER "D:/msys64/ucrt64/bin/g++.exe") # 定义项目名称 project(MyCppProject) # 添加你的源文件,这里假设主文件是main.cpp,可根据实际修改 add_executable(MyCppProject main.cpp)
这段配置会强制CMake使用你指定的g++,而不是默认调用VS的cl.exe。
第二步:配置VSCode的tasks.json
你之前的配置片段不完整,我给你补全一个实用的版本,用来完成CMake构建文件生成和项目编译的全流程:
{ "version": "2.0.0", "tasks": [ { "label": "CMake: 生成构建文件", "type": "shell", "command": "cmake -G \"MinGW Makefiles\" -B build .", "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [], "detail": "调用CMake生成适配MinGW的构建文件" }, { "label": "CMake: 编译项目", "type": "shell", "command": "cmake --build build", "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [], "dependsOn": "CMake: 生成构建文件", "detail": "使用g++编译项目" } ] }
这里的-G "MinGW Makefiles"是关键,它告诉CMake要生成适配MSYS2工具链的构建文件,彻底避开VS的cl.exe。
第三步:小技巧让环境变量更顺畅
你可以打开MSYS2 UCRT64的专属终端,在里面输入code命令启动VSCode,这样VSCode会直接继承MSYS2的环境变量,编译器路径识别会更准确,不会出现找不到g++的情况。
最后,在VSCode里按下Ctrl+Shift+B,选择「CMake: 编译项目」任务,就能用MSYS2的g编译你的C项目啦!
备注:内容来源于stack exchange,提问作者Administrator




