広告

【VSCode/Dev Containers】DockerでC++の開発・デバッグ

C++

当サイトではアフィリエイト広告を利用しています。

広告

はじめに

今回はVS Codeを使って、C++環境をDockerコンテナで作成し、リモート開発とデバッグを行います。

C++の開発といえばVisual Studioだと思いますが、VS CodeとDockerコンテナで環境を作ってみましょう。
Visual Studioのやり方は以下をご覧ください。

【C++】VS2019/2022のインストールとHello World!
Visual Studio 2019でC++の開発のための準備をしてみたいと思います。 インストールからプロジェクトの作成、実行まで解説します。

他にも私のブログで、C++について解説している記事がありますのでご覧ください。

環境

今回試した環境
  • Windows 11 / 10
  • macOS Monterey (M1)
  • Visual Studio Code
  • Docker

2023/09/14 WindowsとMacを使い、最新バージョンで確認しました。

リモート(Dockerコンテナ)開発のメリット

VS Codeの起動はローカルPC、実行環境はリモート(Dockerコンテナ)先と分けることにより、ローカルPCの環境を汚すことがありません
コンテナ上に環境を用意すれば、ローカルPCに色々と開発に必要なライブラリなどをインストールする必要がないためです。

Dockerコンテナは、不要になれば破棄することもできますし、様々なプロジェクトの開発環境が必要な場合、各コンテナごとに環境を用意できますので便利です。

今回はDockerコンテナを利用してリモート開発を行いますが、複数人で開発する際に、同じ開発環境を用意することができます。

他にも、SSHでのリモート開発もサポートしておりますので、Linuxでしか動かないアプリの開発や、クラウド環境にリモート接続し、ローカルPCのVS Codeで編集といったこともできます。

VS Codeインストール

VS Codeのインストール方法は、以下の記事にまとめましたのでご覧ください。

【VS Code】インストール手順を解説 【Windows/M1 Mac対応】
今回はVS Codeのインストール手順を解説します。WindowsとMacのそれぞれ分けてまとめました。

VS Codeのオススメ設定や拡張機能などは、以下の記事にまとめました。

【VS Code】オススメの設定・拡張機能・便利機能・ショートカット【Win/Mac対応】
私的に最初に行う設定や、拡張機能、よく使うショートカットや便利な機能をまとめてみました。

拡張機能(Dev Containers)のインストール

VS Codeを起動しましょう。
何も拡張機能が入っていない状態ですが、日本語パックだけはインストールしました。

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

Dev Containers – Visual Studio Marketplace
Extension for Visual Studio Code – Open any folder or repository inside a Docker container and take advantage of Visual …

VS Code上から拡張機能を検索し、「Dev Containers」をインストールします。

画像に alt 属性が指定されていません。ファイル名: 2022-10-01_22h36_11-1024x210.png

参考までに拡張機能で、「Remote Development」というのもあります。

Remote Development – Visual Studio Marketplace
Extension for Visual Studio Code – An extension pack that lets you open any folder in a container, on a remote machine, …

こちらは、「Remote – SSH」「Dev Containers」「WSL」「Remote – Tunnels」の4つの拡張機能を含んでいます。

今回は、リモート先にDockerコンテナを利用しますので、「Dev Containers」拡張機能のみインストールしました。

インストールした拡張機能は、以下の2つだけです。
開発に必要なものはリモート先にインストールしますので、ローカルPCのVS Codeはこれだけにしました。

Dockerの用意

Macの場合はDockerのみですが、Windowsの場合はDocker(WSL2がバックエンド)が必要です。
Dockerのインストール方法は、以下の記事をご覧ください。

Windows
【Docker Desktop】Windowsにインストール(WSL2)
WindowsにDockerをインストールする手順を解説します。ついでにPython環境を、コンテナに構築してみたいと思います。
Mac
【Docker Desktop】Macにインストール【Monterey/M1】
MacにDockerをインストールする手順を解説します。ついでにPython環境を、コンテナに構築してみたいと思います。

Dockerを起動しておきましょう。

C++環境の用意

コンテナ上にC++の環境を用意してみましょう。
今回は、以下のサンプルプロジェクトを利用して試してみます。

GitHub – microsoft/vscode-remote-try-cpp: C++ sample project for trying out Dev Containers
C++ sample project for trying out Dev Containers. Contribute to microsoft/vscode-remote-try-cpp development by creating …

サンプルプロジェクトはコマンドで開くことができます。
VS Code上でF1をクリックし、以下を入力しましょう。

Dev Containers: Try

「RDev Containers: Try a Dev Container Sample…」を選択します。

C++を選択し、サンプルプロジェクトを構築します。

サンプルプロジェクトを開くことができました。
この時点でコンテナは作成され、コンテナ上にソースコードがあります。

ソースはDockerのボリュームに存在します。ですので、コンテナが破棄されてもソースは残ります。
Docker Desktop上でも確認できます。

広告

C++言語の実行

コマンド実行

VS Codeのターミナルを開き、コンテナ上でコマンドを確認してみましょう。

試しにunameと打ってみましょう。
Linuxと表示され、コンテナ内であることが確認できました。

vscode ➜ /workspaces/vscode-remote-try-cpp (main) $ uname
Linux

実行とデバッグ

サンプルソースを見てみましょう。以下のファイルを開きます。

main.cpp

#include <iostream>
#include <string>

using namespace std;

int main() {
    cout << "Hello World\n";
    cout << "Input: ";
    string data;
    getline(cin, data);
    cout << "Output: " << data << "\n\n";
    return 0;
}

VS CodeのC++の拡張機能は、コンテナ側のVS Codeに自動的にインストールされます。
devcontainer.jsonを確認してみましょう。
コンテナ作成時に、”ms-vscode.cpptools”拡張機能がインストールされます

	// Add the IDs of extensions you want installed when the container is created.
	"extensions": [
		"ms-vscode.cpptools"
	],

VS Codeの拡張機能一覧からも確認できます。
「LOCAL」の方はローカルPCのVS Codeで、「DEV CONTAINER: C++」の方がコンテナの方のVS Codeの拡張機能一覧になります。

デバッグを確認します。
ソースコードにブレークポイントを設定します。

F5を押し実行してみましょう。ブレークポイントで止まることを確認できます。

そのままF5で実行し、文字の入力を行うと以下のように出力されます。

Hello World
Input: test
Output: test

[1] + Done                       "/usr/bin/gdb" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-eresj0iu.u2e" 1>"/tmp/Microsoft-MIEngine-Out-vo1apx0h.m1g"

コンテナの環境について

今回はサンプルプロジェクトをダウンロードし、簡単に試してみました。
環境については、プロジェクト直下の「.devcontainer」フォルダに格納されています。

devcontainer.jsonにはリモート先のVS Codeの拡張機能や設定、Dockerfileにはコンテナの定義が記載されています。
このファイルを元にして、環境をカスタマイズするのも良いでしょう。

Dockerファイルを修正したらF1キーを押しコマンドパレットから、「Rebuild Container」でコンテナの再作成ができます。

Dockerfileを修正し、コンテナの環境をカスタマイズ→コンテナ作成が、VS Code上で完結し、非常に便利です。他の人との開発環境の共有にも便利ですね。

さいごに

VS Codeのリモート開発は素晴らしいですね!
ローカルPCの環境を汚さず、コンテナで開発環境を作成することができます。
手順も面倒ではないので、ぜひ活用しましょう。

さらに詳しくリモート開発を知りたい場合は、以下の記事もご覧ください。

【VSCode/Dev Containers】DockerでPython開発【Win/Mac】
VS CodeでDockerコンテナを使いリモート開発を試してみました。Dockerを使いPython環境を用意し、VS Codeでリモートデバッグを行いないます。

他にも私のブログで、C++について解説している記事がありますのでご覧ください。

C++MacOSVS CodeWindowsツールプログラミング
広告

個人開発

千草 @chigusaweb

現役のITエンジニア。 気ままにコードを書いたり技術情報を発信しています。 Webアプリ/Windows・Macアプリ/モバイルアプリなど。 (Java, PHP, Javascript, Swift, Python, C#, 他) 個人開発:Clibor, Quipha, TXT-Crypter, 符計算特訓, チグサツール Kindle本: Laravel9 実践入門, 他

クリップボード履歴

Clibor

Windows

Cliborはシンプルで高機能なクリップボード履歴ソフトです。 また普段よく使うワードを定型文として登録し、いつでもクリップボードに保存することができます。高度なテキスト整形・FIFOモード・ホットキーに対応。

クリップボード履歴

Windows版Cliborの利便性を、そのままMacでも。 定型文登録、高度なテキスト整形、FIFOモードなど、便利なクリップボード履歴機能を利用できます。macOS最新のTahoeにも対応。

テキスト暗号化

テキストを暗号化してURLで共有・保存できる無料サービスです。 パスフレーズを知る人だけが復号できます。登録不要、データはサーバーに保存されません。 Notionでも利用できます。

学習

Quipha

Web / iOS

自分だけの問題集や問題を作成し、クイズを行い、学習に活用することができるアプリです。 例えば、学校の授業、語学学習、IT資格やその他の資格など多彩な分野での学習を支援します。 いつでも、どこでも、あなたの学習をサポート。

ツール

日常の「ちょっとした効率化」をサポートするWeb便利ツール集。 テキスト・データ処理から最新のAI連携まで、日々のちょっとした手間でググりがちなユーティリティを1つの場所に集約。

麻雀

麻雀の符計算をひたすら特訓しマスターしましょう。 初心者の方はもちろん、もっと速く計算したい方にも役立ちます。 5万対局以上の実践から問題を収録。

コメント

  1. リオリオ より:

    プログラミングの初心者なのですが、MacとWindowsで併用できるC++の環境構築を考えていたので、大変参考になりました。

タイトルとURLをコピーしました