LoginSignup
2

More than 5 years have passed since last update.

Travis CIでC++11

Posted at

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

参考

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
2