在 Windows 上的 Vscode 中使用 Windows Sublinuxsystem 中的 gcc

在 Windows 上的 Vscode 中使用 Windows Sublinuxsystem 中的 gcc

自 Windows Fall Creators Update 以來,我們可以從以下位置安裝 Linux 子系統,例如 Ubuntu:櫥窗商店在 Windows 機器上。

是否可以使用 Windows 上的 Linux 子系統中的 gcc 編譯器在 Windows 上使用 vscode for linux 建置 c 應用程式?

答案1

視覺工作室程式碼是一個跨平台 IDE,它使用tasks.json檔案來描述如何編譯(並執行其他任務)您的專案。您可以在 Windows 或 WSL Ubuntu 子系統中執行 VSCode。如果您想在 WSL 中運行它,則必須使用 Ubuntu/Linux 二進位。


WSL 註釋

在 Windows 命令列中,你可以使用運行linux命令bash

C:\> bash.exe -c <linux command>

例如,您可以gcc使用以下命令運行 Linux

C:\> bash -c "gcc -v"

如果您已經安裝了WSL 上的多個 Linux 系統例如,opensuse 和 ubuntu,您必須使用opensuse-42 runubuntu runbash確定在 windows 命令列中使用哪個 linux 子系統。

C:\> ipconfig | opensuse-42 run grep IP | ubuntu run lolcat

此外,請注意,可以使用 存取 Windows 檔案系統/mnt/<drive letter>/。例如,如果您有一個C:\Projects資料夾,您可以從 Linux 存取它:/mnt/C/Projects


在 Windows 中設定 VSCode 以在 WSL Linux 中使用 GCC

檢查網站上的說明。若要在 Mac 或 Linux 中使用 GCC 或 CLang 編譯器,您可以bash根據任務使用不同的參數。

您可以配置(或建立)您自己的task.json.您必須將 定義bash為要使用的命令。我認為您在 Mac/Linux 上使用的配置幾乎相同。我更改了“cwd”選項。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "wsl": {
        "command": "bash",
        "args": ["-c"],
        "isShellCommand": true,
        "showOutput": "always",
        "suppressTaskName": true,
        "options": {
            "cwd": "/mnt/C/${workspaceRoot}"
         },
        "tasks": [
             {
                "taskName": "hello",
                "args": [
                    "make hello"
                ],
                "isBuildCommand": true
             },
             {
                "taskName": "clean",
                "args": [
                    "make clean"
                ]
             },
             {
                "taskName": "compile w/o makefile",
                "args": [
                    "g++ helloworld.C -o hello"
                ],
                "echoCommand": true
            }
        ]
    }
}

還有一些其他的重點您可以用作其他範例。

筆記:我找到了一些 MS 教程使用 WSL 和 Visual Studio 編譯和偵錯 Linux GCC 程序但不是 Visual Studio Code。

相關內容