ぼくのかんがえたさいきょうの C++ 開発環境
概要
- Docker コンテナ上に C++ 開発環境を構築するサンプル一式を公開
- Google Test による単体テスト機能付き
- Visual Studio Code の Remote-Containers の機能を用いて、上記コンテナのC++開発環境にリモートアクセスによる開発が可能
- ホスト環境を汚すことなく開発が可能
動作環境
- macOS Catalina : 10.15.6
- docker desktop community : 2.3.0.4(46911)
- Visual Studio Code : 1.48.0
構築手順
- Docker/Visual Studio Codeをセットアップ (Visual Studio Code は Remote-ContainersのExtensionも併せてインストール)
- [GitHub - takanassyi/cpp-gtest-dev
](https://github.com/takanassyi/cpp-gtest-dev)からクローン - クローンしたフォルダで Visual Studio Code を開く
- 画面右下に現れる "Reopen in Container" で開発環境のコンテナへリモートアクセス
- コンパイラを選択 (GCC 10.2)
-
src/
およびtest/
フォルダにソースコード/単体テストコードを記述、テスト
テスト実行
終了方法
画面左下の 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が参照してリモートアクセス環境をセットアップ- 今回はDocker Hubで公開されているgcc (10.2.0)の公式イメージをベースイメージに設定
- src/ 今回はシンプルな四則演算のソース
- test/ srcの内容を単体テスト
おわりに
- DockerコンテナとVisual Studio Code & Remote-Containers を用いることで、(C++に限らず)様々な開発環境をホスト環境を汚すことなく開発が可能
- 開発環境そのものもコード (Dockerfile) で管理することで、再現性を確保
- Visual Studio Code & Remote-Containers & Docker バンザイ