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

windows最好的C++环境:VScode中的clangd配合llvm使用

clangd是VScode中最好用的C++智能插件了,比微软的C/C++插件快并且代码补全更智能。

可以使用clangd配合C/C++插件中的运行调试,二者共同使用(但要disable掉C/C++的代码补全的功能),但是这样比较臃肿。

个人喜欢clangd配合code runner插件,速度较快。

code runner插件可以开启插件设置中的“Code Runner: Run In Termial”,这样运行结果会显示在“终端”,而不是“输出”,方便同时使用终端。

在此之前,我使用C++的方法是VScode,加上C/C++插件,配置mingw的gcc和g++编译器(指定路径即可,不需要配合环境Path),但是比较慢,不方便。

所以推荐clangd+Code Runner,一种方法是在Code Runner中配置编译器仍然为gcc和g++,然后VScode的项目目录下需要新建一个.clangd文件:

CompileFlags:Add: - "-target"- "x86_64-w64-windows-gnu"- "--driver-mode=g++"Compiler: D:/UsualSoftware/Dev-Cpp/TDM-GCC-64/bin/g++

如此,即可显式指定clangd使用到的include文件进行检查,否则,我这里是用的msvc中的库文件进行代码检查。

VScode的设置面板中的所有配置都可以在C:\Users\Admin\AppData\Roaming\Code\User\settings.json看到其json格式,与ui上对应。但是就算指定了Clangd: Arguments中"--query-driver=D:/UsualSoftware/Dev-Cpp/TDM-GCC-64/bin/g++*"也是没有效果。完整配置如下:

"clangd.arguments": ["--enable-config","--log=verbose","--pretty","--background-index",// 使用正斜杠,并在末尾加 * 匹配所有可能的驱动程序"--query-driver=D:/UsualSoftware/Dev-Cpp/TDM-GCC-64/bin/g++*"
]

个人认为可以放到C:\Users\Admin\AppData\Roaming\Code\User\settings.json,也可以放到项目根目录的.vscode/settings.json中,但是据尝试我这里都无效,都显示使用了msvc的库。

据了解,Chrome在windows已经由clang编译,再加上clangd猜测会与clang配合更好一些,所以尝试一下clang。

下载方法:https://github.com/llvm/llvm-project/releases

下载windows-amd64即可,之后安装。

以我这里为例,将VScode插件设置里Clangd: Path改为D:\UsualSoftware\LLVM\bin\clangd.exe,或者添加过环境变量的话直接写clangd.exe也可以。

然后打开VScode中Code Runner插件的设置,找Code-runner: Executor Map,在文件中编辑,改为clang和clang++,如下:

"code-runner.executorMap": {..."c": "cd $dir && clang $fileName -o $fileNameWithoutExt.exe --debug && $dir$fileNameWithoutExt.exe","zig": "zig run",// "cpp": "cd $dir && D:\\UsualSoftware\\Dev-Cpp\\TDM-GCC-64\\bin\\g++.exe $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt","cpp": "cd $dir && clang++ $fileName -o $fileNameWithoutExt.exe --debug && $dir$fileNameWithoutExt.exe",// "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt","objective-c": "cd $dir && clang -framework Cocoa $fileName -o $fileNameWithoutExt.exe --debug && $dir$fileNameWithoutExt.exe",...
}

接下来配置项目目录中,.vscode/launch.json:

{"version": "0.2.0","configurations": [{"type": "lldb","request": "launch","name": "Debug Current File",// 使用变量自动匹配当前活动编辑器中的文件名"program": "${fileDirname}/${fileBasenameNoExtension}.exe","args": [],"cwd": "${fileDirname}",// 可以配合tasks.json使用,实现“一键编译+调试”// "preLaunchTask": "Compile with clang++"}]
}

值得注意的是,其中的"program": "\({fileDirname}/\){fileBasenameNoExtension}.exe", “当前活动编辑器中的文件名”就是你此时此刻正盯着看、光标在里面闪烁的那个文件的名字。写成${fileBasenameNoExtension}.exe就不需要对每个文件再修改launch.json了。

此外,llvm并不包含库文件的实现,所以仍然需要借助于TDM-GCC或者msvc,通过以下命令可以查看clang++编译时使用的库文件路径:

clang++ -v 260211.cpp -o 260211.exe // 这个会用msvc
clang++ -v 260211.cpp -o 260211.exe --target=x86_64-w64-windows-gnu // 这个会用TDM-GCC

TDM-GCC 或 VS Build Tools 都有库文件实现,但是clang没有,所以用clang的时候需要二者其一。

由于clangd不需要配置,默认使用msvc库文件进行代码检查,所以编译时候也使用msvc,不再用TDM-GCC中的库文件了,保持一致,不易错乱。

关于 preLaunchTask,在.vscode/launch.json中配置调试时,加入preLaunchTask,然后创建.vscode/tasks.json,可以在运行调试时候,自动先运行task,然后调试。这样的好处是代码改完后不需要手动编译,直接点击调试就可以完成“编译为exe+针对这个exe调试”,不需要手动再点一次编译了(如果没有Code Runner插件,就是在终端输入cd "c:\Users\Admin\Desktop\temp_code\" ; if ($?) { clang++ 260211.cpp -o 260211.exe --debug } ; if ($?) { .\260211.exe }的过程)。

给出一个tasks.json和launch.json的配置:
launch.json:

{"version": "0.2.0","configurations": [{"type": "lldb","request": "launch","name": "Debug Current File",// 关键:使用变量自动匹配当前活动编辑器中的文件名"program": "${fileDirname}/${fileBasenameNoExtension}.exe","args": [],"cwd": "${fileDirname}",// 建议配合 tasks.json 使用,实现“一键编译+调试”"preLaunchTask": "Clang-MSVC"}]
}

tasks.json

{"version": "2.0.0","tasks": [{"label": "Clang-MSVC","type": "process","command": "D:/UsualSoftware/LLVM/bin/clang++.exe", "args": ["-g", "-gcodeview", // 关键:生成 MSVC 兼容的调试格式,lldb 读得更舒服"${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe","-fms-extensions",     // 开启微软语法扩展"-fms-compatibility",  // 开启微软兼容模式"-Wall"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$msCompile"] }]
}

preLaunchTask和label要一致,否则会报错。这里task同样采用msvc库文件链接(而非TDM-GCC),与Code Runner和clangd的代码检查补全一致。

总结,下载llvm,使用clangd插件,Code Runner插件,配置clangd中的clangd路径(可在下载的llvm的bin目录中找到clangd.exe,配这个就行),修改Code Runner的语言map,设置一下命令,然后配置VScode的launch.json和tasks.json。以及电脑上需要有TDM-GCC或者msvc等任意一个C++的库实现,比如:

D:\UsualSoftware\Dev-Cpp\TDM-GCC-64\lib\gcc\x86_64-w64-mingw32\9.2.0\include
或者
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.41.34120\include

至此,就配完了一个智能且完整的C++运行、语法检查、代码补全、调试、编译整个VScode环境,十分好用,且相比于微软的C/C++插件,运行要快很多。

mac系统中是同样的配置,事实上,mac自带了clang(虽然mac是把gcc换了个名字叫clang)。

http://www.jsqmd.com/news/371577/

相关文章:

  • 【预测模型】基于机器学习的土壤污染状态识别附Matlab代码
  • 2026年口碑好的日标充电桩,国标充电桩厂家用户优选推荐 - 品牌鉴赏师
  • 2026年2月蒸汽流量计厂家优选,耐高温高压,采购指南 - 品牌鉴赏师
  • python免费ide工具
  • 2026年诚信的DC电源模块,AC电源模块厂家行业口碑榜单 - 品牌鉴赏师
  • 2026年毕业论文AI率超过30%怎么办?这几款工具帮你稳降到15%以下
  • 【课程设计/毕业设计】基于springboot的物流管理系统设计与实现基于 SpringBoot 的智能物流管理系统设计与实现【附源码、数据库、万字文档】
  • P4170 学习笔记
  • 2026年嘎嘎降AI好用吗?对比4款主流降AI工具给你答案
  • Java毕设项目:基于springboot的物流管理系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • Java计算机毕设之基于JAVA的物流管理系统的设计与实现基于springboot的物流管理系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 2026年毕业答辩前AI率还没降下来?3天应急方案全攻略
  • 【数据分析】灰狼算法优化模糊C-均值聚类分析(GWO-FCM)附Matlab代码
  • 热血江湖2.0完整版源码包:GS服务端+数据库+登录器+百宝阁传送/宝宝挂/武勋居中染色插件+智能假人辅助
  • Java计算机毕设之基于SpringBoot+Vue的旅游信息咨询网站的设计与实现基于springboot的旅游咨询分享平台的设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 【图像识别】基于神经网络的字符识别附Matlab代码
  • 【毕业设计】基于springboot的物流管理系统设计与实现(源码+文档+远程调试,全bao定制等)
  • 【计算机毕业设计案例】基于Springboot的物流物流中心信息化管理系统设计与实现基于springboot的物流管理系统设计与实现(程序+文档+讲解+定制)
  • 《企业AI应用商店建设,AI应用架构师的战略思考与布局》
  • AI原生应用的自动化运维:减少人工干预
  • 上海计算机学会YACS月赛题解 | 2026年1月丙组
  • LongCat 发布原生「深度研究」智能体,为你量身定制更可靠的吃喝玩乐攻略
  • AI运维协同:多智能体在测试-开发冲突调解的决策框架
  • 2026年豆包降AI效果怎么样?不如试试这几款专业工具
  • 用例价值评估:聚类算法在测试用例退役决策的支持工具‌
  • 第一次用AI写论文?照着这个流程做AI率低于15%
  • 大数据数据服务中的联邦学习技术应用
  • 开发具有视觉-语言多模态生成能力的AI Agent
  • 科研论文,图片配色到底怎么判断和决定?
  • 提示工程架构师大厂经验:优化提示系统效率的8个秘诀,内部资料首次公开