我刚刚开始使用travis-CI,所以如果这是一个愚蠢或明显的问题,我很抱歉。
按照指示这里
我写了以下travis.yml
language: cpp
dist: trusty
matrix:
include:
- os: linux
compiler: gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-7
env:
- MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
- os: linux
compiler: clang
addons:
apt:
sources:
- llvm-toolchain-trusty-5.0
packages:
- clang-5.0
env:
- MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"
before_install:
- eval "${MATRIX_EVAL}"
script:
- mkdir build
- cd build
- cmake -DCMAKE_VERBOSE_MAKEFILE=ON ..
- cmake --build .
- ctest这将导致clang构建中出现以下错误:
/home/travis/build/path_to_project/./include/abulafia/support/type_traits.h:20:12:错误:命名空间‘std’中没有名为'decay_t‘的成员;您的意思是’衰减‘吗? /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/type_traits:1725:11:注:“衰变”在此声明
使用以下命令编译时:
cd /home/travis/build/path_to_project/build/tests/char_set && /usr/bin/clang++-5.0 -Wall -pedantic -Wextra -std=c++17 -I/home/travis/build/path_to_project/./include -I/home/travis/build/path_to_project/googletest/googletest/include -o CMakeFiles/char_set_tests.dir/test_any.cpp.o -c
这说明它正在加载gcc的图书馆。这里有什么我不明白的吗?
谢谢!
发布于 2018-04-14 00:56:43
可以通过在clang旁边安装g++7来升级标准库来解决这个问题。相关的矩阵条目如下:
matrix:
include:
- os: linux
addons:
apt:
sources:
- llvm-toolchain-trusty-5.0
- ubuntu-toolchain-r-test
packages:
- clang-5.0
- g++-7
env: MATRIX_EVAL="CC=clang-5.0 && CXX=clang++-5.0"把这个换成OP的yaml应该就行了。注意:compiler: clang是超量的-它的效果被eval "${MATRIX_EVAL}"技巧所覆盖。
发布于 2017-09-26 04:00:46
是的,这是一个众所周知的问题,特拉维斯-词的建设环境。它是针对默认的ubuntu信任的libstdc++编译和链接的,这是gcc 4系列的stdlib,甚至不符合C++11。
请看我很久以前开的问题。
如果您需要一个带有travis-ci的C++14 libstdc++,您应该使用docker并制作一个最近的ubuntu图像。这是AFAIK最好的解决办法。
https://stackoverflow.com/questions/46417416
复制相似问题