我刚刚开始使用 travis-CI,所以如果这是一个愚蠢或明显的问题,我深表歉意。
按照说明操作here :
我编写了以下 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: error: no member named 'decay_t' in namespace 'std'; did you mean 'decay'?
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/type_traits:1725:11: note: 'decay' declared here
使用以下命令编译时:
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 的库。这里有什么我不明白的地方吗?
谢谢!
最佳答案
是的,这是 travis-ci 构建环境的一个众所周知的问题。它正在针对默认的 ubuntu-trusty libstdc++
进行编译和链接,这是 gcc 4 系列 stdlib,甚至不符合 C++11。
参见an issue我很久以前就打开了。
如果您需要带有 travis-ci 的 C++14 libstdc++
,您应该使用 docker 并制作更新的 ubuntu 镜像。据我所知,这是最好的解决方法。
关于c++ - Travis CI 似乎从错误的 stdlib 中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46417416/