簡體   English   中英

Travis CI似乎正在從錯誤的stdlib中讀取

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM