為Microsoft C ++配置VS Code


為Microsoft C ++配置VS Code

將VS Code配置為在Windows上使用Microsoft C ++編譯器和調試程序(即MSVC)

准備工作

  1. 安裝VSCode,並且安裝官方C++插件

  2. 安裝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版本更迭較快,目前已經支持智能生成配置文件,因此這里將官方文檔的操作步驟稍微修改如下:

  1. 在開始菜單啟動Developer Command Prompt

  2. 在上面的命令行界面啟動VSCode,命令格式為: code 項目路徑

  3. Ctrl+Shift+P調出命令面板然后輸入C++,選擇C/C++:編輯配置(UI)

  4. 指定Compiler path,即cl.exe的路徑,類似:

    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.22.27905\bin\Hostx64\x64\cl.exe
    
  5. 指定IntelliSense mode為msvc-x64

  6. 回到VS Code主界面,新建一個CPP文件,等待VSCode加載語言引擎,然后F5等待彈出命令面板, 依次選擇 C++(WIndows), cl.exe build

  7. 系統自動創建配置文件launch.json和tasks.json並且開始編譯調試CPP文件

  8. 主要配置完成

總結: 官方給出的方法就是從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"

腳本可以放置在任意位置,雙擊腳本即可啟動帶有MSVC環境的VS Code

方法三: 修改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直接調用

將編譯任務寫成腳本文件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
            }
        }
    ]
}

總結

從效率上看官方提供的方法最佳,其他方法可能更加方便使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM