閃光☆法師のブログ。

アニメとゲームとICT、そして人生哲学について徒然なるままに。

VS code remote wslでc++の実行環境を整える

公式のドキュメントはこちらから。

code.visualstudio.com

公式とはちょっと違うやり方でしたが、なんかできたのでこちらの環境でやったことを備忘録として記録しておきます。

環境はWSL2でdistributionはUbuntu 18.04 LTSです。

①とりあえずvs code remote developmentの導入後、 C/C++ の拡張機能を導入

②wsl側で

sudo apt update
sudo apt install g++

のコマンドを実行

③こちらはオプションです。拡張機能のcoderunnerを入れているので、同じものを入れている人は参考になるかもしれません。

Shift + Ctrl + P でsetting.jsonを開き、

"code-runner.executorMap": {
     "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
........以下略
},

の記述を書き込む。

以上③までで環境によってはもう実行できると思います。

ちなみに俺は実行まではできたけど、VS codeのエディタ上ではエラーを吐いていました。(以下続く)

#include <iostream>

のところでなぜかライブラリをインクルードできないと怒られた。

どうやらインクルードパスを設定しなければならないらしい。

そこで、c++のヘッダファイルの場所を調べることに。

以下のstackoverflowに書いてありました。

stackoverflow.com

どうやら /usr/include/c++/7.5.0/ 以下に標準ライブラリのヘッダファイルが格納されているみたい。


(俺の場合はg++ 7.5.0だったので、上記の/usr/include/c++/7.5.0/の階層にありました。各々のバージョンによって異なると思うので、

g++ --version

のコマンドを実行して適宜確かめてください。)


VS codeで Shift + Ctrl + P を押して C/C++ : edit configrationsを入力し、選択する(UIでもjsonでも可)

UIで設定する場合、 f:id:sniper_fly:20200428162821p:plain

このような設定項目があるはずなので、以上のように記述すればヘッダーがインクルードされないよーというエラーは消えた。

jsonで設定する場合は

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "/usr/include/c++/7.5.0/"
                ]
            }
        }
    ],
    "version": 4
}

以上のようにする。

 "path": [
                    "/usr/include/c++/7.5.0/"
                ]

のpathのなかに/usr/include/c++/7.5.0/を追加すればオーケー。