[英]Travis CI seems to be reading from the wrong stdlib
我剛剛開始使用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/FrancoisChabot/abulafia/./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:注意:聲明為“ decay”這里
使用以下命令進行編譯時:
cd /home/travis/build/FrancoisChabot/abulafia/build/tests/char_set && /usr/bin/clang++-5.0 -Wall -pedantic -Wextra -std=c++17 -I/home/travis/build/FrancoisChabot/abulafia/./include -I/home/travis/build/FrancoisChabot/abulafia/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。
看到我很久以前打開的一個問題 。
如果需要帶有travis-ci的C ++ 14 libstdc++
,則應使用docker並制作一個更新的ubuntu映像。 這是AFAIK的最佳解決方法。
這可以通過在glang旁邊安裝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}"
技巧所覆蓋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.