【VS Code】CMake+GCCを使ってC/C++の開発を行う
はじめに
Visual Studio Code上でC/C++で開発する機会も多いです。ただある程度の規模となって複数のソースファイルに分かれるようになると、コンパイルが面倒になってきます。そのときに便利なのがCMakeで、複数のソースファイルからなるプログラムのビルドをmakeよりもわかりやすく行うことができます。
今回は、VS Code上でCMakeを使ってC/C++の開発を行う際のやり方をまとめてみました。コンパイラとしてGCCを使っています。
更新履歴
- 2024.05.09 初版
- 2024.05.14 アクティビティバーにCMake Toolsのアイコンを表示する方法を追記
使用した環境
- Windows 10
- Visual Studio Code 1.89.0
- GCC(MinGW版) 13.2.0
- CMake 3.27.7
Visual Studio Code拡張機能
次のVS Code用拡張機能を使いました。
- CMake Tools v1.17.17
- CMake Language Support v0.0.9
- C/C++ v1.20.5
(CMake ToolsとC/C++はC/C++ Extension Packをインストールするとまとめてインストールされます)
ワークスペースの準備
CMakeを使って開発を行う場合は、新たにワークスペースを作ったほうがやりやすいです。
新しいウィンドウを開きます

ワークスペースにフォルダを追加します。(今回はcmake_testとします)

今回は以下のようなファイルを用意します。

各ファイルの実際のコードです。
#include <iostream>
#include "sub.h"
int main(int argc, char * argv[])
{
sub_test();
return 0;
}#ifndef SUB_H
#define SUB_H
void sub_test();
#endif#include "sub.h"
#include <iostream>
void sub_test()
{
std::cout << "Hello, world!" << std::endl;
}cmake_minimum_required(VERSION 3.8)
project(main CXX)
add_executable(main main.cpp sub.cpp)CMakeLists.txtの書き方については、以下のエントリも参考にしてください。
キットの選択とアクティビティバー
キットの選択
プログラムをビルドする前に必要なコンパイラを選択します。CMakeの構成が必要です。Ctrl+Shift+Pを押してコマンドパレットを開き、「CMake: 構成」を選択します。

選択可能なキットの一覧が表示されるので、必要なコンパイラを選択します。(見つからなければ、「キットのスキャン」を実施してください。事前にコンパイラへのパスは通しておくこと)

いろいろと出ていますが(私の環境です。なぜか古いものも残っています・・・)、この中から「GCC 13.2.0 i686-w64-mingw32」を選択します。
このようにすることで、アクティビティバーにCMakeのアイコンが表示されます。
(参考)アクティビティバーにアイコンが表示されるのはCMake Tools v1.16以降になります。
Visual Studio Code CMake Tools Extension 1.16 Update: New CMake Tools Sidebar and CMake Debugging options
アクティビティバー
VS CodeのアクティビティバーからCMakeを選択します。いろいろな設定が簡単にできるようになっています。

ビルド
プログラムをビルドするには、CMakeのビルドにマウスカーソルを合わせ、右側に表示されたビルドのアイコンを押します。

これでビルドされ、cmake_test/buildにmain.exeが作成されます。
デバッグ
プログラムがビルドされたら、デバッグを行いますが、注意点が必要です。通常は「実行」メニューの中にある「デバッグの開始」を選択しますが、複数のソースファイルで構成されている場合は、これではうまくいきません。

うまくいかないのは、デバッグの前にアクティブファイル(今開いているファイル)のみでビルドしようとするためです。今回は複数のソースファイルから構成されているので、ファイルが足りずにビルドに失敗します。
ビルドと同時にデバッグ
ビルドと同時にデバッグを行う場合には、CMakeのデバッグにマウスカーソルを合わせ、右側に表示されたデバッグのアイコンを押します。

初回にデバッガとして何を使うか聞いてきます。今回はGCCでコンパイルしているため、「C++(GDB/LLDB)」を選択します。

ソースファイル側で、ブレークポイントを設定していると、そこでプログラムの実行が一時停止されます。

デバッグのみの実行
デバッグのたびに毎回ビルドが実行されるのを避けたい場合もあります。そのような場合には、launch.jsonを作成することで対応できます。VS Code自体がひな型を作ってくれるので、変更箇所は少しだけで済みます。
launch.jsonの準備
まずは空のlaunch.jsonを生成します。デバッグモードにして、「launch.jsonファイルを作成します。」と書かれた部分をクリックします。

launch.jsonをどこに作成するか聞いてきます。ルートフォルダ(cmake_test)を選択します。

すると、cmake_test/.vscode/launch.jsonが作成されます。このファイルを開きます。エディタの右下に「構成の追加」というボタンが出てくるので、これを押します。

「{} C/C++: (gdb) 起動」を選択します。

選択すると、ひな型が挿入されます。下図の赤線部分を変更します。

今回は、実行ファイル名が決まっているため、以下のようにしました。また、gdbへのパスは設定してあるため、パスは指定しません。

上書き保存すると、デバッグモードの一番上に今作成した設定が表示されます。左側の緑の三角を押すと、デバッガが立ち上がります。

リリース版のビルド
リリース版をビルドするには、CMakeの構成からバリアントを選択し、表示された鉛筆のアイコンを押します。

これを選ぶとバリアントの一覧が出てくるので、「Release」を選択します。

これでビルドすると、リリース版が作成されます。



ディスカッション
コメント一覧
まだ、コメントがありません