Travis CIでC++11 + CMake3.2 + Google Testなプロジェクトをターゲットするためのメモです.
パッケージを追加
Travis CI環境はツールチェーンとCMakeのバージョンが少し古く,Google Testが未導入なためパッケージを追加・更新を行います.
Clang-3.7 + CMake3.2 + Google Testの場合,以下のようにaddonsを.travis.yml追加します.
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- george-edison55-precise-backports
packages:
- clang-3.7
- cmake
- cmake-data
- libgtest-dev
Google Testはパッケージを導入しただけではビルドされていないため,以下の設定を.travis.ymlに追加ビルドしておきます.
before_script:
- install -d gtest_build
- pushd gtest_build
- cmake -DCMAKE_CXX_COMPILER=clang++-3.7 /usr/src/gtest/
- make
- sudo cp *.a /usr/lib
- popd
折角なので複数のコンパイラでテストする
Travis CIのmatrix機能を用いると,複数のツールチェーンに対してテストを実行することができるらしく,折角なのでやってみることにします.
以下のように,ツールチェーンに関する設定を複数記述します.この設定では,g++-4.9,g++-5.0,clang++-3.6,clang++-3.7を用いてそれぞれテストを行います.
matrix:
include:
- compiler: gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- george-edison55-precise-backports
packages:
- g++-4.9
- cmake
- cmake-data
- libgtest-dev
env: COMPILER=g++-4.9
- compiler: gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- george-edison55-precise-backports
packages:
- g++-5
- cmake
- cmake-data
- libgtest-dev
env: COMPILER=g++-5
- compiler: clang
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.6
- george-edison55-precise-backports
packages:
- clang-3.6
- cmake
- cmake-data
- libgtest-dev
env: COMPILER=clang++-3.6
- compiler: clang
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- george-edison55-precise-backports
packages:
- clang-3.7
- cmake
- cmake-data
- libgtest-dev
env: COMPILER=clang++-3.7
成果物
最終的は.travis.yamlはこんな感じになりました.C++11向けにMessagePackのシリアライザを実装してみたので,良かったら使ってみてください.msgpack11