🍑

WSL2上のDockerでCppUTestの環境を作る

2022/03/23に公開1

環境構築

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 によるとautoconflibtoolも必要らしいので、インストール
    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"
      
  • cpputestをclone
    git clone https://github.com/cpputest/cpputest.git
    
  • cpputestのビルド
    cd cpputest
    autoreconf . -i
    ./configure 
    make tdd
    
    ↓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
        
    • 作成
      NewProject.sh myTddTestProject
      
      カレントディレクトリにmyTddTestProjectが作成され、その中にプロジェクトのテンプレートが作成される

Discussion