2016-01-31 26 views
5

analogo: Travis CI with Clang 3.4 and C++11Travis CI con C++ 14 e Linux

Come si arriva Travis CI di lavorare con C++ 14?

Ecco la nostra attuale .travis.yml di file:

language: cpp 
compiler: 
- gcc 
- clang 
os: 
- linux 
- osx 
script: 
    make main 

ecco il nostro makefile

# Factor Pro 

# Macros 
CXXFLAGS = -Os -std=c++14 

# Rules 
all::main 

main: main.cpp 
    g++ -o main $(CXXFLAGS) main.cpp 

clean: 
    rm -rf *.o main 

Funziona su osx, ma non linux.

+0

È necessario sopportare il compilatore C++ supporta C++ 14. Prova a stampare "g ++ -v". Se necessario, aggiungi un pacchetto sufficiente per compilare il tuo codice. – Jeff

risposta

10

Il GCC di default e le versioni clang sono terribilmente obsolete, e avrete bisogno di installare le versioni più recenti manualmente in questo modo:

language: generic 
os: osx 
matrix: 
    include: 
    - os: linux 
     env: COMPILER_NAME=gcc CXX=g++-5 CC=gcc-5 
     addons: 
     apt: 
      packages: 
      - g++-5 
      sources: &sources 
      - llvm-toolchain-precise-3.8 
      - ubuntu-toolchain-r-test 
    - os: linux 
     env: COMPILER_NAME=clang CXX=clang++-3.8 CC=clang-3.8 
     addons: 
     apt: 
      packages: 
      - clang-3.8 
      sources: *sources 

È possibile installare più versioni di Clang e GCC come this.

Nota: sto usando language: generic, perché se language: cpp, orribilmente-obsoleti CC e CXX di override esportazioni e per-cella di TravisCI è più veloce.

Mi consiglia inoltre di utilizzare

$(CXX) -o main $(CXXFLAGS) main.cpp 

Poiché il compilatore C++ non è quasi mai g++ nel mondo reale.

+4

@PyRulez '* sources' è un" backreference "al precedente' & sources' alla riga 11 - l'intero albero da sotto la proprietà contrassegnata da '& sources' viene copiato sotto la proprietà contrassegnata da' * sources'. –