web-dev-qa-db-ja.com

WindowsのVscodeでWindows Sublinuxsystemのgccを使用する

Windows Fall Creators Update以降、Windowsマシンの windows store からUbuntuなどのLinuxサブシステムをインストールできます。

Windows上のLinuxサブシステムからgccコンパイラを使用して、Linux上のWindowsでvscodeを使用してCアプリケーションをビルドすることは可能ですか?

5
Briefkasten

Visual Studio Code は、tasks.jsonファイルを使用してプロジェクトをコンパイル(および他のタスクを実行)する方法を記述するクロスプラットフォームIDEです。 VSCodeは、WindowsまたはWSL Ubuntuサブシステムで実行できます。 WSLに実行する場合は、Ubuntu/Linuxバイナリを使用する必要があります。


WSLに関する注意

Windowsコマンドラインで、 bashを使用してLinuxコマンドを実行できます

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

たとえば、次を使用してLinux gccを実行できます。

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

WSL上の複数のLinuxシステム をインストールした場合、例えばopensuseとubuntuでは、bashの代わりにopensuse-42 runまたはubuntu runを使用して、Windowsコマンドラインで使用するLinuxサブシステムを決定する必要があります。

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

さらに、/mnt/<drive letter>/を使用してWindowsファイルシステムにアクセスできることに注意してください。たとえば、C:\Projectsフォルダーがある場合、Linuxの/mnt/C/Projectsからアクセスできます。


WSL LinuxでGCCを使用するためのWindowsでのVSCodeの構成

Webサイトの指示 を確認してください。 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
            }
        ]
    }
}

他にもいくつかあります Gists 他の例として使用できます。

注:WSLとVisual Studioを使用したLinux GCCプログラムのコンパイルとデバッグ で、Visual Studio CodeではないMSチュートリアルを見つけました。

4
Jaime