Travis CIでC++11, C++14のコードをビルド


このエントリーをはてなブックマークに追加

Travis CIでC++11のコードをビルドしたとき(参考:Travis CI にて、C++11のソースをgccとclangの両方でビルドする - minus9d's diary)やたら大変だったのですが、いつのまにかUbuntuのバージョンが14.04に上がったらしく、前よりは簡単にできるようになりました。

以下では、g++とclang++の両方でC++11またはC++14のコードをビルドする例について示します。

C++11の場合

デフォルトでgcc 4.8.4 と clang 5.0.0が使えるので、特に工夫しなくてもC++11が使えます。

以下のMakefile

CXX = g++
CXXFLAGS = -W -Wall -std=c++11
TARGET = main

$(TARGET): main.cpp
  $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@

以下の.travis.yml

language: cpp
compiler:
    - clang++
    - g++
script:
  - make CXX=${CXX}
  - ./main

をレポジトリ直下に置けばOKです。ここで、yamlファイルの変数${CXX}には、travisが勝手に適切な値を入れてくれます。

このコードのソースとテスト結果です。

C++14

clang 5.0.0はC++14対応していますが、gcc 4.8.4はC++14対応していないため、対策が必要です。

以下のMakefile

CXX = g++
CXXFLAGS = -W -Wall -std=c++14
TARGET = main

$(TARGET): main.cpp
  $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@

以下の.travis.yml

language: cpp

matrix:
  include:
  - compiler: clang++
  - compiler: g++
    addons:
      apt:
        sources:
          - ubuntu-toolchain-r-test
        packages:
          - g++-5
    env:
      - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"

before_install:
   - eval "${MATRIX_EVAL}"

script:
  - make CXX=${CXX}
  - ./main

をレポジトリ直下に置きます。g++の方のみ追加オプションを利用してg++5を使えるようにしています。

このコードのソースとテスト結果です。

参考