0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

最近、C++を書く必要が出てきました。

本番環境はLinuxです。
でも、私が使っているPCはWindows。

だったらWindowsで書けばいいじゃないか、と思いますよね。

でも、本番がLinuxなら、開発環境もLinuxに近づけたくなります。

Windowsでしか動かないコードをうっかり書いてしまうのを避けたいからです。

そこで使うのがWSLです。

WSLは、Windows上でLinuxを動かせる仕組みです。

これでLinux環境が手に入りました。

……と思ったら、次の問題があります。

WSLはCLIです。

黒い画面でコマンドを入力するあれです。

まさかCLIでコードを書くわけにはいきません。

じゃあ、どうするのか。

実は、VS Codeと連携できます。

エディタはいつものVS Code。
実行環境だけがWSL。

つまり、普段と変わらない感覚でLinux上のプログラムを書けます。

WSLをインストールする

まずはWSLをインストールします。

PowerShellを管理者権限で開き、次を実行します。

wsl --install

インストールが終わったら、PCを再起動します。

次にUbuntuをインストールします。

wsl --install -d Ubuntu

途中でユーザー名とパスワードを聞かれます。

どちらも自由に決めて大丈夫です。

途中で次のようなメッセージも表示されます。

Would you like to opt-in to platform metrics collection (Y/n)?

私は n を選びました。

これでWSLの準備は完了です。

次回からはスタートメニューからWSLを起動できます。

VS Codeと連携する

ここが今回の本題です。

VS Codeで「WSL」という拡張機能をインストールします。

そのあと、WSLで適当なディレクトリを作ります。

mkdir ~/cpp-test
cd ~/cpp-test

そして、次を実行します。

code .

すると、VS Codeが起動します。

見た目は、いつものVS Codeです。

普通にファイルを作れます。

普通に編集できます。

でも、実際に編集しているのはWSL上のファイルです。

つまり、

  • エディタはGUI
  • 実行環境はLinux

という状態になります。

CLIでコードを書く必要はありません。

C++環境を入れる

パッケージ情報を更新します。

sudo apt update

続いてGCC(コンパイラ)をインストールします。

sudo apt install build-essential

これでC++を動かせるようになります。

Hello, World!を動かす

main.cpp を作ります

#include <iostream>

int main() {
    std::cout << "Hello, World!\n";
}

せっかくなので、VS Codeのターミナルを開きます。

ショートカットは

Ctrl + J

です。

WSLのターミナルが開いていることを確認したら、コンパイルします。

g++ main.cpp -o main

実行します。

./main

結果はこちらです。

Hello, World!

ちゃんとWSL上でコンパイルと実行ができました。

でも、コードを書いていたのはいつものVS Codeです。

違和感なく開発できます。

まとめ

WSLはCLIだけではありません。

VS Codeと連携すれば、いつもどおりGUIでコードを書きながら、Linux環境で開発できます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?