Travis CI で最新の Clang (3.5) を使ってテストする

Travis CI は Github アカウントと連携してリポジトリ.travis.yml というファイルを置くことで Github に push したときに自動でテストを回して CI してくれるサービス.

Travis で使われている Ubuntu 12.04 に入っているコンパイラgcc 4.6 と clang 3.3 なので,それで十分な場合は普通に compiler.travis.yml で指定すれば良い.なので,どうしても最新のものを使いたい(C++14 の機能を使っているとか)場合のみ参考にしてください.

ちなみに,最新の gcc を使う方法は Travis CI で最新の gcc を使って自動テスト に書いたので,今回は最新の Clang (3.5) を使う方法をメモ.

結論から書くと,次のような .travis.yml を書けば良い.

language: cpp
script:
    - clang++ --version
    - clang++ -std=c++1y -Wall -Wextra -pedantic test/hoge_feature_test.cpp -l boost_unit_test_framework && ./a.out
compiler:
    - clang
install:
    - sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test
    - wget -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
    - sudo add-apt-repository --yes 'deb http://llvm.org/apt/precise/ llvm-toolchain-precise main'
    - sudo apt-get -qq update
    - sudo apt-get -qq install clang-3.5
    - sudo apt-get -qq install libboost1.48-all-dev

各項目で何をやっているか簡単に説明する.

install:

clang 3.5 はデフォルトで libstdc++ を使うように設定されているので,PPA から gcc 4.8 をインストールして libstdc++ を 使えるようにする.最新の gcc といえば gcc-snapshot パッケージが鉄板だったけれど,少なくとも Ubuntu 12.04 の gcc-snapshot パッケージは今年の春のパッケージで止まっているので使い物にならず PPA を使うことにした.(libc++ の使い方は必要になったら調べる)

次に clang をインストールする.最新の clang は LLVM の apt リポジトリで提供されているので,パッケージの認証鍵を apt に登録して clang-3.5 をインストールするだけで良い.ちなみに 3.4 はまだリリースされていないのでまだパッケージが無い(そろそろリリースされるはず…).3.5 のパッケージは最新のスナップショットになっているっぽい.

script:

バージョン情報をログに残しておいてから自分のテストをまわすコードを書く.上記の例では Boost.Test を使ったソースを -std=c++1y でビルドして実行している. a.out が正常終了すれば OK,そうでなければ NG と判定される.

複数のコンパイラで挙動を確認したい場合は 以前の記事 も合わせて両方のコンパイラでテストを回しておくと良さそう.