Travis CI与C++ 14和Linux

PyR*_*lez 9 c++ continuous-integration makefile travis-ci c++14

类似:Travis CI与Clang 3.4和C++ 11

如何让Travis CI与C++ 14一起工作?

这是我们当前的.travis.yml文件:

language: cpp
compiler:
 - gcc
 - clang
os:
 - linux
 - osx
script:
    make main
Run Code Online (Sandbox Code Playgroud)

这是我们的 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
Run Code Online (Sandbox Code Playgroud)

它可以工作osx,但不是linux.

наб*_*эли 16

默认的GCC和Clang版本非常过时,您需要手动安装更新的版本,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

您可以像这样安装多个版本的Clang和GCC .

注意:我正在使用language: generic,因为如果language: cpp,TravisCI可怕的过时CCCXX覆盖每个单元格的出口并且速度更快.

我也建议你使用

    $(CXX) -o main $(CXXFLAGS) main.cpp
Run Code Online (Sandbox Code Playgroud)

因为C++编译器几乎从不g++在现实世界中.

  • @PyRulez`*sources`是对第11行的前一个`&sources`的"反向引用" - 来自`&sources`标记的属性下的整个树被复制到由`*sources`标记的属性下. (5认同)