为Microsoft C ++配置VS Code
将VS Code配置为在Windows上使用Microsoft C ++编译器和调试程序(即MSVC)
准备工作
安装VSCode,并且安装官方C++插件
安装VS 2017 / VS2019 或其他版本,并且安装了MSVC工具集
MSVC 和 Mingw-w64
Mingw-w64 比较简单,只需要将bin路径加入path环境变量列表即可正常工作
MSVC 是一套复杂的工具集,其环境变量的配置非常复杂,以至于VS的最近几个版本将配置写到了脚本中,并且明确建议用户不应使用全局环境变量设置,而是使用Developer Command Prompt,而且随着用户修改VS套件,适用的环境变量也会变化.对应到VS Code中,由于没有全局环境变量的支持,支持调用cl.exe是无法运行的,VS Code官方提供的建议是从Developer Command Prompt启动VS Code,这样启动的VSCode将会继承MSVC的环境变量,因而可以正常使用MSVC编译
方法一: (官方建议)从Developer Command Prompt for VS启动VS Code
参考官方文档为Microsoft C ++配置VS Code
VS Code版本更迭较快,目前已经支持智能生成配置文件,因此这里将官方文档的操作步骤稍微修改如下:
在开始菜单启动Developer Command Prompt
在上面的命令行界面启动VSCode,命令格式为: code 项目路径
Ctrl+Shift+P调出命令面板然后输入C++,选择C/C++:编辑配置(UI)
指定Compiler path,即cl.exe的路径,类似:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.22.27905\bin\Hostx64\x64\cl.exe
指定IntelliSense mode为msvc-x64
回到VS Code主界面,新建一个CPP文件,等待VSCode加载语言引擎,然后F5等待弹出命令面板, 依次选择 C++(WIndows), cl.exe build
系统自动创建配置文件launch.json和tasks.json并且开始编译调试CPP文件
主要配置完成
总结: 官方给出的方法就是从Developer Command Prompt启动VS Code使其继承MSVC环境变量.每次启动C++文件夹都需要如此操作
方法二: 将方法一的启动过程写个简单的脚本
在方法一的基础上,为每个c++文件夹写个简单的启动脚本,注意修改相应路径.VsDevCmd.bat即Developer Command Prompt对应的脚本路径
@echo off call "F:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" code "F:\Source\C++\projects\__ENV-MSVC"
方法三: 修改tasks.json,直接启动VSCode
将Developer Command Prompt加入tasks.json,缺点是每次启动task都会执行VsDevCmd.bat,增加大约2s的时间成本
{ "tasks": [ { "label": "cl.exe build active file", "type": "shell", "command": "call", "args": [ "F:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\Tools\\VsDevCmd.bat", { "value": "& cl.exe", "quoting": "escape" }, "/Zi", "/EHsc", "/Fe:", "${fileDirname}\\${fileBasenameNoExtension}.exe", "${file}" ], "problemMatcher": "$msCompile", "dependsOrder": "sequence", "dependsOn": [], "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared", "showReuseMessage": true, "clear": false }, "group": { "kind": "build", "isDefault": true } } ], "version": "2.0.0" }
方法四: 将编译任务写成bat脚本,tasks.json直接调用bat脚本
将编译任务写成脚本文件build.bat,假设此脚本放在根目录下
@echo off rem chcp 65001 call "F:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" set compilerflags=/Zi /EHsc set linkerflags=/OUT:main.exe cl.exe %compilerflags% /Fe main.cpp /link %linkerflags%
然后在tasks.json中直接调用此脚本即可
{ "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "build.bat", "group": { "kind": "build", "isDefault": true } } ] }
总结
从效率上看官方提供的方法最佳,其他方法可能更加方便使用