5
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WSLとVisual Studio CodeでC/C++開発環境を楽して作る(2019年7月)

Posted at

はじめに

既に色んなところで「VSCodeでC/C++開発環境を構築する手順」が溢れているけど、Visual Studio 付属の cl.exe を使う内容だったり、MinGW のためにコンフィグを書く内容だったり、WSL と VSCode の橋渡しに苦労する内容だったりする。

今年5月に使えるようになったらしい Remote Development を使うとかなり楽にできたので、似たネタは既出だけどオレオレ環境を簡単にまとめ。

ポイント

  • VSCode さんが WSL をよろしくやってくれるため、頑張ってコンフィグを書かなくてよい
  • C++ でなくても WSL で動く Python や、リモートサーバで動く PHP などにも同様に使える
  • MinGWやcygwinじゃないので、すごくLinuxで、とてもWSLていう感じ

環境

  • Windows 10 (ver 1809)
  • Visual Studio Codeはインストール済みの想定
    • 少し前はinsider版である必要があったそうだが、やってみたら安定版でもできた
  • WSLの導入についても省略
    • 私の環境は Ubuntu 18.04LTS だが、なんでもよいはず

WSLの準備

Linux側でgccgdbが使えるようにする。あらかじめsudo apt updateなどをしておくと善い。次のコマンドで一括していろいろをインストールできる。

sudo apt install build-essential

インストール後に念の為、gcc -vgdb -vを試すと佳い。ちなみに、私の環境だとgdbが入らなかったようなので、apt install gdb もした。

VSCode に拡張機能 Remote Development を入れる

Remote Development - Visual Studio Marketplace を開きinstallボタンを押してVSCodeの拡張をインストールする。

※ Remote Development は WSL 向けの Remote-WSL だけでなく SSH や Docker 向けの拡張も含むパッケージなので、気になる人は WSL 向けのみをインストールすればよいかと

C++ をビルドしてみる

ディレクトリの作成

プロジェクトとして /mnt/c/CppTest/(WinのパスでC:\CppTest\に対応)みたいなディレクトリを作る。そこで、

cd /mnt/c/CppTest
code .

とすると、WSL に接続された VSCode が開く。最初はファイアウォールが立ち上がったり、VSCode の設定が実行されたりで少し時間がかかる。

wsl_vscode_cpp_welcome.png

起動すると、WSLと接続している感じのあるアイコンが左下に出てくる。ちょっとした達成感

VSCodeにC++拡張機能を入れる

WSL に接続した VSCode では、ローカル側の拡張とWSL側の拡張の2種類があり、C/C++ 拡張は後者のリモート側にインストールしなくてはならない点に注意。

cppファイルを開くとインストールをおすすめされるので、未導入の場合はそこでインストールするのが分かりやすい。ローカル(Windows)のVS Code に既に導入されているなら、
CppTest [WSL] - Visual Studio Code 2019_07_04 17_26_55.png
「インストール on WSL」でWSL側にもインストールすることができる。

main.cppの作成とビルド

プロジェクトディレクトリに次の main.cpp を作ってみる。

#include <cstdio>

int main()
{
    for (int i = 0; i < 10; i++)
    {
        printf("ふぇぇ… %d\n", i);
    }
    return 0;
}

1行目だけかろうじてC++っぽい以外はべたべたなC言語だけど、C++としてビルドします。ショートカットキーCtrl+Shift+Bで、こんな感じにコンパイラを選べるので、

2019-07-08_07h40_34.png

今回はg++を選択。なお、歯車のアイコンをクリックするとtask.jsonがディレクトリに生成されて次回から選択が省略できる。次節のデバッグにはtask.jsonが必要なので、この時点で生成しておくのが佳い。

コンパイルが成功したら、VS Codeで実行を確認してみる。ソースファイルと同名の実行ファイルが作成されているので、Ctrl+@を押してターミナルを開き、./mainを実行する。

デバッガを使う

適当なところにブレークポイントをおいて、gdbを試してみる。F5でデバッグを実行しようとすると、言語や環境の選択を求められるので、
2019-07-04_17h59_33.png
2019-07-04_18h00_18.png
適当に選んであげるとデバッグが始まる。
main.cpp - CppTest [WSL] - Visual Studio Code [管理者] 2019_07_04 18_16_16.png
こんなプログラムでも、ブレークポイントで一時停止したり、変数が表示されたりするのが確認できた。やったぁ

「タスク'g++ build active file'を見つけられませんでした。」

2019-07-04_18h07_49.png
と表示されてデバッグ出来ないのは、デバッグ前に'g++ build active file'という名のタスクを実行しようとしたが、そのタスクが見つからないから。ダイアログの「タスクの構成」を選択し、さらに構成するタスクを適切に(今回はg++)を選択すればtask.jsonが生成されて、デバッグできるようになるはず。

あとがき

dockerを動かせるWSL2の正式版が近い将来出るそうだし、より一層 Windows が開発者向けとして佳くなりますね。今までOSがWinというだけで迫害されてきた開発者たちも、もはやただ高いだけのMacから 馬鹿にされることはなくなるでしょう。素敵な未来です

5
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?