Ответ 1
Было (и до сих пор) довольно болезненно выяснить, что возможно/разрешено с помощью Тревиса CI, а что нет. Мое текущее решение выглядит следующим образом:
language: cpp
matrix:
include:
- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.8']
env: COMPILER=g++-4.8
- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-4.9']
env: COMPILER=g++-4.9
- os: linux
compiler: gcc
addons:
apt:
sources: ['ubuntu-toolchain-r-test']
packages: ['g++-5']
env: COMPILER=g++-5
- os: linux
compiler: clang
env: COMPILER=clang++
- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.5']
packages: ['clang-3.5']
env: COMPILER=clang++-3.5
- os: linux
compiler: clang
addons:
apt:
sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.6']
packages: ['clang-3.6']
env: COMPILER=clang++-3.6
# Activate when 3.7 is released and the repository is available
# - os: linux
# compiler: clang
# addons:
# apt:
# sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.7']
# packages: ['clang-3.7']
# env: COMPILER=clang++-3.7
# Activate when we are allowed to use MacOS X
# - os: osx
# compiler: clang
# env: COMPILER=clang++
script:
make CXX=$COMPILER -j3
Некоторые замечания:
- Вышеупомянутая инфраструктура на основе контейнеров
- Для каждого контейнера установлен только один компилятор - ускоряет сборку и устраняет проблемы, поскольку вы часто не можете параллельно устанавливать несколько пакетов/компиляторов.
- Вы не можете установить
CXX
напрямую, так как Travis CI перезапишет его. Вам нужна промежуточная переменная типаCOMPILER
-
clang++
без расширения в настоящее время Clang 3.4 - Clang 3.7 еще не доступен, но должен быть скоро
- Clang 3.8 (версия для разработки) из репозитория
llvm-toolchain-precise
в настоящее время находится в черном списке
(Обратите внимание, что вышеизложенное изменится/улучшится с течением времени, теперь (2016-01-11) доступен Clang 3.7, как и MacOS X. Вышеуказанное означает отправную точку, при необходимости приспосабливайтесь)