Est-il possible d'utiliser travis-ci pour construire une application/projet c ++ utilisant cmake, gcc-6 et g ++ - 6?
Configurer Travis pour utiliser le bon compilateur est un peu délicat. Voici comment procéder:
Tout d'abord, vous devez paramétrer la distribution sur trusty (la dernière version d'ubuntu prise en charge par travis-ci) et requérir Sudo.
dist: trusty
Sudo: require
Ensuite, nous définissons le langage et le compilateur:
language: cpp
compiler: gcc
Jusqu'ici tout va bien. Nous pouvons maintenant configurer la configuration d’install d’apt:
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-6
- g++-6
- cmake
Cela ajoute le ppa pour la version plus récente de nos outils de construction et les installe. L'étape suivante consiste à configurer des liens vers les nouveaux gcc et g ++. /usr/local/bin
fait l'objet d'une recherche avant /usr/bin
, de sorte que les compilateurs de la version 6 que nous venons d'installer seront accessibles avec seulement gcc
et g++
. Le début de votre script:
devrait ressembler à ceci:
script:
- Sudo ln -s /usr/bin/gcc-6 /usr/local/bin/gcc
- Sudo ln -s /usr/bin/g++-6 /usr/local/bin/g++
Ajoutez également la ligne suivante si vous souhaitez vérifier les versions de ces outils:
- gcc -v && g++ -v && cmake --version
Les versions qui reviennent de ces commandes sont les suivantes:
gcc: 6.2.0
g++: 6.2.0
cmake: 3.2.2
C'est fondamentalement ça. Le fichier .travis.yml complet ressemble à ceci:
dist: trusty
Sudo: required
language:
- cpp
compiler:
- gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-6
- g++-6
- cmake
script:
# Link gcc-6 and g++-6 to their standard commands
- ln -s /usr/bin/gcc-6 /usr/local/bin/gcc
- ln -s /usr/bin/g++-6 /usr/local/bin/g++
# Export CC and CXX to tell cmake which compiler to use
- export CC=/usr/bin/gcc-6
- export CXX=/usr/bin/g++-6
# Check versions of gcc, g++ and cmake
- gcc -v && g++ -v && cmake --version
# Run your build commands next
J'ai trouvé des erreurs dans la réponse de @ henne90gen (ou peut-être qu'elles ont juste changé). Plus précisément:
Sudo
.gcc-7
n'est pas installé sur /usr/local/bin
et il est déjà dans la PATH
.Cela devrait fonctionner:
dist: trusty
language: cpp
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- gcc-7
- g++-7
script:
- export CC=gcc-7
- export CXX=g++-7
- ...
Voici un exemple plus long qui inclut une version moderne de Qt (avec QtSVG que j'utilise) et fonctionne sous OSX et Linux.
os:
- linux
- osx
language: cpp
dist: trusty
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- sourceline: "ppa:beineri/opt-qt-5.10.1-trusty"
packages:
- gcc-7
- g++-7
- qt510-meta-minimal
- qt510svg
- qt510imageformats
- qt510tools
before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew update ;
brew install qt5 cmake ;
brew link --force qt ;
fi
script:
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
export CC=gcc-7 ;
export CXX=g++-7 ;
source /opt/qt510/bin/qt510-env.sh ;
fi
- cmake --version
- qmake --version
- ...