天天看點

VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作

1. 背景

  VS Code隻是一個代碼編輯器,編譯運作c/c++程式需要自己配置編譯器。現不想使用MinGW的gcc或g++編譯程式,而電腦本身有VS,故希望使用VS自帶的cl.exe來進行編譯。用于測試的C++程式如下所示:

#include <iostream>
using namespace std;

int main()
{
    cout << "11" << endl;
    return 0;
}
           

2. cl.exe配置

方法1:單次配置

  打開windows的開始菜單,輸入Native Tools Command Prompt,根據電腦版本選擇輕按兩下打開X86 Native Tools Command Prompt或者X64 Native Tools Command Prompt。也可輸入Developer Command Prompt,根據VS版本選擇Developer Command Prompt for VS 2017。

VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作
// 打開VS Code,記得将C:\Users\Administrator\Desktop\test換成自己程式所在的檔案夾
code C:\Users\Administrator\Desktop\test
           
VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作

  在VS Code的中輸入cl,檢測環境配置是否正确。

VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作

  若需要使用cl,每次都需通過該方法打開VS Code。直接通過VS Code圖示來打開,會出現錯誤。

VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作

  更詳細的内容可以參考部落格:VS:指令行運作C/C++程式(無須任何配置)

方法2:全局配置

  在系統變量中添加cl.exe的相關路徑。如此在所有的cmd或通過VS Code圖檔打開的終端都可用。注意:以下路徑需根據自己的VS路徑作相應修改。

VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作
//在Path中添加cl.exe所在檔案夾路徑。若未找到,直接VS的安裝目錄下搜尋cl.exe即可
C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86;

//在系統變量中建立變量INCLUDE,添加cl.exe的包含目錄
C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include;
C:\Program Files\Windows Kits\10\Include\10.0.17763.0\shared;
C:\Program Files\Windows Kits\10\Include\10.0.17763.0\ucrt;
C:\Program Files\Windows Kits\10\Include\10.0.17763.0\um;
C:\Program Files\Windows Kits\10\Include\10.0.17763.0\winrt;

//在系統變量中建立變量LIB,添加cl.exe的庫目錄
C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x86;
C:\Program Files\Windows Kits\10\Lib\10.0.17763.0\um\x86;
C:\Program Files\Windows Kits\10\Lib\10.0.17763.0\ucrt\x86;
           

  更詳細的内容可以參考部落格:VS:在windows上調用cl.exe編譯運作C/C++程式

3. VS Code配置

  打開所需編譯的C++程式,點選F5,啟動調試。在彈出的選項中選擇C++ (Windows)和cl.exe - 生成和調試活動檔案。此時VSCode自動生成launch.json和tasks.json。

VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作
VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作
VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作

自動生成的launch.json:

{
    // 使用 IntelliSense 了解相關屬性。 
    // 懸停以檢視現有屬性的描述。
    // 欲了解更多資訊,請通路: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "cl.exe - 生成和調試活動檔案",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "preLaunchTask": "cl.exe build active file"
        }
    ]
}
           

自動生成的tasks.json:

{
    "tasks": [
        {
            "type": "shell",
            "label": "cl.exe build active file",
            "command": "cl.exe",
            "args": [
                "/Zi",
                "/EHsc",
                "/Fe:",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "${file}"
            ]
        }
    ],
    "version": "2.0.0"
}
           

注意:

  1. launch.json中的preLaunchTask需與tasks.json中label一緻。
  2. 若使用全局配置,在選擇C++ (Windows)和cl.exe - 生成和調試活動檔案時,無法自動生成launch.json和tasks.json,并出現如下錯誤:
VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作

解決方法1:

  通過X86 Native Tools Command Prompt或者X64 Native Tools Command Prompt以VS開發人員的權限打開VS Code。

解決方法2:

  通過Developer Command Prompt for VS 2017以VS開發人員的權限打開VS Code。

解決方法3:

  調試時,選擇C++ (Windows)和預設配置将上面的launch.json和tasks.json拷貝到.vscode檔案夾中。

VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作
VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作

4. VS Code運作

VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作
VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作
VS Code:使用VS的cl.exe編譯運作C/C++程式1. 背景2. cl.exe配置3. VS Code配置4. VS Code運作

繼續閱讀