3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VSCodeとRemote-Containersを用いたC++開発環境

Posted at

ぼくのかんがえたさいきょうの C++ 開発環境

概要

  • Docker コンテナ上に C++ 開発環境を構築するサンプル一式を公開
    • Google Test による単体テスト機能付き
  • Visual Studio Code の Remote-Containers の機能を用いて、上記コンテナのC++開発環境にリモートアクセスによる開発が可能
    • ホスト環境を汚すことなく開発が可能

動作環境

構築手順

Screen Shot 2020-08-14 at 22.21.17.png

  • コンパイラを選択 (GCC 10.2)

Screen Shot 2020-08-14 at 19.39.11.png

  • src/ および test/フォルダにソースコード/単体テストコードを記述、テスト

テスト実行

  • Visual Studio Code の下部のBuildLaunchボタン(▷ボタン)を押下すると実行
    Screen Shot 2020-08-14 at 22.29.51.png

終了方法

画面左下の Dev Container:cpp-gtest-devを選択し、Close Remote Connectionを選択するとコンテナへのリモートアクセスを終了

サンプルソース

フォルダ構成

.
├── .devcontainer
│   └── devcontainer.json
├── .gitignore
├── .vscode
│   ├── c_cpp_properties.json
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── CMakeLists.txt
├── Dockerfile
├── README.md
├── build
├── docker-compose.yml
├── src
│   ├── CMakeLists.txt
│   ├── calculator.cc
│   └── calculator.h
└── test
    ├── CMakeLists.txt
    └── test_calculator.cc
  • .devcontainer/ Remote-Containersに関わる設定。リモートアクセスしたときに導入するExtensionもここに記述(主にC++用のExtension)。
  • .vscode/ Visual Studio Code上でのC++開発に関わる設定(gdbへのパス、コーディングスタイル・・・etc)
  • Dockerfile docker-compose.yml 開発環境を構築するDockerfileとdocker-compose.yml。 devcontainer.jsonが参照してリモートアクセス環境をセットアップ
  • src/ 今回はシンプルな四則演算のソース
  • test/ srcの内容を単体テスト

おわりに

  • DockerコンテナとVisual Studio Code & Remote-Containers を用いることで、(C++に限らず)様々な開発環境をホスト環境を汚すことなく開発が可能
  • 開発環境そのものもコード (Dockerfile) で管理することで、再現性を確保
  • Visual Studio Code & Remote-Containers & Docker バンザイ
3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?