I have recently been adding Travis CI builds to code that I host on GitHub, so that I don’t need to host my own build infrastructure.
To users, this just means that there is a green badge at the top of the README, but not much else:
To build a simple C++ project, I added in this .travis.yml file:
langauge: cpp
sudo: false
addons:
apt:
packages:
- libusb-1.0-0-dev
script:
- make
Unfortunately, on this infrastructure, the default build tools are currently ancient, and installed on Ubuntu Precise (12.04):
$ make
g++ src/missile.cpp examples/basic-sync/basic-sync.cpp -o bin/basic-sync -lpthread -lusb-1.0 -std=c++11 -Wall
cc1plus: error: unrecognized command line option ‘-std=c++11’
cc1plus: error: unrecognized command line option ‘-std=c++11’
Option 1: Update the toolchain
There is some structures you can use to install an extra repository and some named packages, instead of using apt-get directly.
langauge: cpp
sudo: false
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-4.8
- g++-4.8
- libusb-1.0-0-dev
script:
- make
Because the old version was still installed, I had to refer to the exact version in the Makefile, as in:
g++-4.8 src/missile.cpp examples/basic-sync/basic-sync.cpp -o bin/basic-sync -lpthread -lusb-1.0 -std=c++11 -Wall
Option 2: Update the platform
You can also change to a more recent Ubuntu distribution. Presumably Ubuntu Precise is only the default because existing builds use it.
If you need to build C++11 apps on Travis CI, then builds will work under Ubuntu Trusty (14.04), which happens to be the newest distribution currently available:
langauge: cpp
sudo: required
dist: trusty
addons:
apt:
packages:
- libusb-1.0-0-dev
script:
- make