[C++/Mac] C++をVisual Studio Codeで書きたい

みなさんC++を書くときにIDEって使ってますか。MacではXcodeがデファクトスタンダードになっていますが、正直なところ使いやすいと感じている人は少ないはず。今回はMicrosoft謹製のVisual Studio Codeを使ってクロスプラットフォームな開発環境を整える方法を紹介します。

[C++] 令和最新版 C++をVisual Studio Codeで書きたい に最新のプロジェクト作成方法を載せています。本記事は多少古い内容になっています。

MacでのC++開発環境

MacでC++を書くとき、Xcodeを使う人は結構いるんじゃないかと思います。僕もXcodeを使っていたんですが、個人的にXcodeって

  • 重い
  • カスタマイズ性が皆無
  • エディタとして使い勝手が悪い
  • IDEとしてはあまりにも貧弱

という印象があります。使いたくて使うというよりかは、使わなければならないから使うとった感じでしょうか。あまりいないとは思いますが、プロジェクト内に数千のファイルがあると、コード解析だけで数時間CPUが天井に張り付き、少し書き換えるだけでまたガッツリ重たくなります。コード補完もまともに動かなくなり、最後にはクラッシュします。再起動したらまたコード解析が走って…地獄です。ファイル数が少ないときはそうでもないんですけどね…

いろんなIDE

C++を書くときに使うであろうIDEをいくつかまとめておきます。

CLion

まず真っ先に挙がるのがみんな大好きJetBrainsのCLionでしょう。IDEとしては最高峰で、使いやすさはさすがの一言。しかもクロスプラットフォームです。ただし有償で、結構お高い。お金に余裕があるときはこれ一択と言えます。

Visual Studio Code

Microsoftが開発したテキストエディタ。IDEではないのですが、豊富な機能拡張を用いることでIDEのように使うことができます。同じくクロスプラットフォーム。今回はこれを使います。

Eclipse

Java開発でおなじみのIDE。まぁIntelliJの足元にも及ばないので今となっては使うことはないでしょう。めちゃくちゃ重い上、豊富な拡張機能で回復不能なほどバグります。クロスプラットフォームです。

Visual Studio

Microsoftが開発したIDE。C#の環境としてのほうが有名ですね。IDEとしての完成度は非常に高いのですが、VC++というC++もどきの言語を使う必要があります。Windows限定。

Xcode

Appleが開発したIDEもどき。前述の通りIDEとして貧弱な上エディタとしても機能不足。アプリのデプロイのために使うといった使い方になると思います。Mac限定。

Qt Creator

クロスプラットフォームなGUIライブラリであるQtを使って開発を行うときに使うIDE。こちらもIDEとしては機能不足ですが、かなりシンプルなので使い勝手はそこまで悪くないです。クロスプラットフォーム。

Code::Blocks

上記のIDEに比べるとマイナーなIDE。wxWidgetsというGUIライブラリを使ったときに触りました。古臭いです。他にもIDEがいくつかある今となってはあえて使う必要もないでしょう。オープンソースなクロスプラットフォームIDEです。

Visual Studio Code

いろいろな開発環境を使ってみましたが、最終的にVisual Studio Codeを使うことにしました。というかCLionを除くとこれ一択でした。VSCode自体はエディタですので、これに拡張機能を入れてIDEとして使えるようにしていきます。VSCodeには以下のような特徴があります。

  • カスタマイズ性が非常に高い
  • クロスプラットフォーム
  • 拡張機能が豊富
  • C++以外の言語でも使えます
  • vimキーバインドが使える

vimキーバインドが使えるのは個人的に重要です。。XcodeもかつてはXVimという拡張機能があったのですが、Appleさんが拡張機能を封じた上、Xcodeのバージョンアップで使えなくなることが多々あり、XVimの開発者さんもVSCodeに逃げたようで、Xcode 10ではまともに機能していません。

VSCodeを使うデメリットが1つだけあります。それはシンタックスハイライトが弱い、という点です。識別子や演算子、型などの分類が謎のため、型に色を付ける、変数に色を付ける、といったことができません。色分けをちゃんとやっている人にとっては慣れるまで辛いかもしれません。まぁXcodeの色分けもわりと適当でしたけど。

VSCodeでC++を使う準備

前置きが長くなりましたが、VSCodeでC++を使う準備をしていきたいと思います。VSCodeでやりたいのはこんな感じ。

  • C++のコンパイル/ビルド
  • vimキーバインド
  • CMakeでクロスプラットフォームな環境づくり
  • コード補完

拡張機能のインストール

以下の拡張機能をインストールします。

  • C/C++
  • CodeLLDB
  • CMake Tools
  • Vim

C/C++はMicrosoft公式の拡張機能です。C/C++で開発を行うために必要な機能が一通り揃っています。もちろんIntelliSenseも使えます。後述しますが、lldbとの相性が悪いためデバッグには別の拡張機能を使います。

CodeLLDBは、lldbを使ってデバッグを行うための拡張機能です。本家C/C++では使いものにならないためこっちの拡張機能を使います。

CMake Toolsは、読んで字のごとくCMakeを使うための拡張機能です。コマンドパレットからCMakeを操作できます。

Vimは永遠のテキストエディタVimの機能をVSCodeで使うための拡張です。

ビルド

ここではCMakeを用いたビルドの方法について説明します。

CMake: Quick Startを選んでCMakeのプロジェクトファイルを作ります。

プロジェクトも名を入れてEnter。次にExecutableを選んでEnter。するとプロジェクトが作成されます。

CMake: Buildを選ぶとビルドが走ります。

C++を使うための設定

IntelliSenseを使うために、c_cpp_properties.jsonを編集します。

C/C++: Edit configurations(JSON)を選びます。すると以下のような設定ファイルが生成されます。

現状特に設定の必要はありません。C++17じゃ最先端すぎる、という人はcppStandardを変更しましょう。

デバッグ

CodeLLDBを用いたデバッグの方法です。まずはlaunch.jsonを編集します。

C++(GDB/LLDB)を選ぶとjsonファイルが生成されます。以下はC/C++拡張機能を使ったデバッグに必要な設定です。

先述の通り、C/C++を使用したデバッグは使いものにならないため、CodeLLDBを使う設定に変えます。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug",
            "type": "lldb",
            "request": "launch",
            "program": "${workspaceFolder}/build/Example", // デバッグする実行形式ファイルのパス
            "args": [],
            "cwd": "${workspaceFolder}",
            "terminal": "integrated" // 統合ターミナルを利用
        }
    ]
}

これでF5キーを押すとデバッグできます。ブレークポイントも使えます。

コードを書いてみるとわかりますが、ちゃんとコード補完も機能しています。

まとめ

快適なC++生活が今、始まる!

0 件のコメント :

コメントを投稿