のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

Visual Studio CodeでC++の環境構築をやってみる

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気です。

VIsual Studio CodeでC++の環境を構築します。
C++のコードを書く時に案外いいエディタがなくて結構困ります。
今まではsublime text+ pluginを使っていましたが、デバッガ厳しい、
補完難しいなど色々困っていました。

そこで、試しにVisual Studio CodeでC++の環境を作ってみました。

Visual Studio Code

Microsoftが作っているWindows, MacOS, Linuxで動作する
軽量高速な高機能エディタです。
Visual Studio Code - Visual Studioより)

ダウンロードは次のサイトを参考にしてください。
code.visualstudio.com

設定方法

まずは、Visual Studio CodeにC++の環境を構築します。
C++の開発機能であるcpptoolsを拡張機能(plugin)からインストールします。
その手順は次の通りです。

  1. Visual Studio Codeを開く
  2. 左から拡張機能を選択する。
  3. cpptoolsを検索する。
  4. インストールする。

f:id:tereka:20170211164158p:plain

Visual Studio Codeと色々な機能

前準備

ソースコードを準備します。他にも設定ファイルなどが必要なものはありますが、
それは適宜、準備していきます。

#include <iostream>
using namespace std;

int main(void){
    int a = 10;
    int b = 20;
    int c = a + b;

    cout << c << endl;
    return 0;
}

コンパイルをする

コンパイルのショートカットキーは「cmd + shift + b」を使うと可能です。
ただ、タスクランナーがないと出るので、「tasks.json」を作るように言われます。
そのため、tasks.jsonを設定します。tasks.jsonにはg++のコマンドを設定します。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "g++",
    "isShellCommand": true,
    "args": ["-O2", "-g", "test.cpp"],
    "showOutput": "always"
}

デバッグ

Debugタブから起動すると、「launch.json」が作られます。
起動するためには、launch.jsonの修正が必要です。

"program"の値を以下に変更が必要です。この"program"は
実行ファイルのパスを記述します。

            "program": "${workspaceRoot}/a.out",

デバッグは以下のような画面で、gdbが使われます。
予め、break pointを仕掛けるとその箇所で止まります。
実際にデバッグすると次のような画面になります。

f:id:tereka:20170211164547p:plain

ヘッダーの設定

コマンドで、「C/Cpp: Edit Configurations」を選択すると
C++の設定ファイル「「c_cpp_properties.json」が作られます。
そのの内部にヘッダーを設定する箇所があるので、その箇所にヘッダーのパスを
設定をすると読み込みすることができます。

このファイルはOS別に設定ができるため、該当するOSの"includePath"を変更します。

            "includePath": [
                "/usr/include",
                "/usr/local/include"
            ],

関数検索

関数検索は「cmd + shift + O」を使えばできます。
後はその欄で該当するファイルを探しましょう。

f:id:tereka:20170211162214p:plain

最後に

C++のエディタで良いものがなかったので、これはいい感じだと思っています。