🍑
WSL2上のDockerでCppUTestの環境を作る
環境構築
WSL2
- 省略
docker
-
https://qiita.com/oriver3/items/e139e964a88e7cbdb029 を参考にインストール
sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
docker サービス起動
- Windowsを起動する毎に行う必要がある
sudo service docker start
root以外のユーザがdockerコマンドを使えるようにする
- 下記を実行
sudo groupadd docker sudo usermod -aG docker $USER
- 上記実行後にWSLからログアウト、ログインしなおす
Docker Composeのインストール
- WSL内での作業
- Docker Composeも公式の手順でインストール
- v2も出ているが、2022年1月現在、v1.29.2がstableだそうなので、それをインストール
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o ~/docker-compose sudo cp ~/docker-compose /usr/local/bin/ sudo chmod +x /usr/local/bin/docker-compose
tdd-envコンテナを用意する
ベースのコンテナを作る
- まずは最新のUbuntuのコンテナの中に入る
docker run --name="tdd_env" -it ubuntu:latest
- コンテナに入ったらパッケージを更新し、開発環境などに必要なパッケージ類をインストール。→とりあえずapt update/upgradeだけ
apt update && apt upgrade -y
コンテナをコミットする
- 現在の環境のコンテナをコミットしてイメージを作成
exit # コンテナのbashから抜ける docker commit tdd_env tdd_env docker images REPOSITORY TAG IMAGE ID CREATED SIZE tdd_env latest XXXXXXXXXXXX 4 seconds ago 500MB
作業用ディレクトリもマウントする
- WSL上の.shで、docker run時に作業用ディレクトリ(カレントディレクトリ)をdockerの/workにマウントさせる
#!/bin/sh docker run -v $PWD:/work -it tdd_env
- この
dev.sh
をwsl上で実行すれば、tdd_devコンテナが起動する。
tdd-env上の開発環境
- gccインストール
apt install gcc
- 「テスト駆動開発による組み込みプログラミング」の「付録.A」に環境構築について書かれている
apt install g++ apt install build-essential
-
https://qiita.com/naoyoshinori/items/3d6c7a2cc0b050c02873 によると
autoconf
とlibtool
も必要らしいので、インストールapt install autoconf libtool
- git で cpputest を clone しているので、先にgitをインストール
apt install git
- git の設定
git config --global user.name "momoandbanana" git config --global user.email "momoandbanana@XXXXXXXXXX"
- git で cpputest を clone しているので、先にgitをインストール
- cpputestをclone
git clone https://github.com/cpputest/cpputest.git
- cpputestのビルド↓make tddの最後のほう
cd cpputest autoreconf . -i ./configure make tdd
./CppUTestTests .........................................!........ !..!..!..!..!..!..!..!..!..!.................!..!. .!..!..!..!..!....!.!........!.....!..!..!..!..!.. !..!..!..!..!..!..!...!...!....!..!.......!..!...! ..!..!..!..!..!..!..!..!..!..!..!..!...........!.. .................................................. .................................................. .................................................. ....!............................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................... OK (870 tests, 816 ran, 1536 checks, 54 ignored, 0 filtered out, 26 ms) ./CppUTestExtTests .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. .................................................. ......!........................................... ............................!..................... .................... OK (520 tests, 518 ran, 1629 checks, 2 ignored, 0 filtered out, 23 ms) root@36f6b6967bc2:/work/cpputest#
- CppUTestの環境変数を設定します。
echo "export CPPUTEST_HOME=$(pwd)" >> ~/.bashrc echo 'export PATH=$PATH:${CPPUTEST_HOME}/scripts' >> ~/.bashrc
- プロジェクトの作成
- 実行権限付与
- CppUTestにはプロジェクトを作成するスクリプトがあるが、ダウンロードしたソースには実行権限がないので、実行権限を付与する
chmod a+x ${CPPUTEST_HOME}/scripts/NewProject.sh
- CppUTestにはプロジェクトを作成するスクリプトがあるが、ダウンロードしたソースには実行権限がないので、実行権限を付与する
- 作成カレントディレクトリにmyTddTestProjectが作成され、その中にプロジェクトのテンプレートが作成される
NewProject.sh myTddTestProject
- 実行権限付与
Discussion
最後までいったら、もう一度、コンテナをコミットしたほうがいい(下記を再実行)