【问题标题】:Travis CI with C++14 and LinuxTravis CI 与 C++14 和 Linux
【发布时间】:2016-01-31 03:49:47
【问题描述】:

类似:Travis CI with Clang 3.4 and C++11

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

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

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

这是我们的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

它适用于osx,但不适用于linux

【问题讨论】:

  • 你需要忍受你的 C++ 编译器支持 C++14。尝试打印“g++ -v”。如有必要,添加一个足以编译您的代码的包。

标签: c++ makefile continuous-integration c++14 travis-ci


【解决方案1】:

默认的 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

您可以安装多个版本的 Clang 和 GCC,例如 this

注意:我使用的是language: generic,因为如果使用language: cpp,TravisCI 已经过时的CCCXX 会覆盖每个单元格的导出,而且速度更快。

我也推荐你使用

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

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

【讨论】:

  • @PyRulez *sources 是第 11 行对前一个 &sources 的“反向引用”——&sources 标记的属性下的整个树被复制到@987654332 标记的属性下@.
猜你喜欢
  • 2017-03-17
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 2015-03-28
  • 1970-01-01
  • 2016-06-15
相关资源
最近更新 更多