lcov 在 travis-ci 中失败

lcov 在 travis-ci 中失败

我正在尝试在 travis-ci 上构建我的 git 存储库,但我认为我遇到了 gcc 版本和 lcov 之间的冲突。我的 .travis.yml 如下所示:

sudo: false

addons:
  apt:
    sources:
      - ubuntu-toolchain-r-test
    packages:
      - g++-4.8
      - lcov

script:
  - export CXX="g++-4.8"
  - export CC="gcc-4.8"
  - export GCOV="gcov-4.8"
  - make check

after_success:
  - lcov --capture --directory …;

错误如下:

make check;
-- The CXX compiler identification is GNU 4.8.1
-- The C compiler identification is GNU 4.8.1
Building coverage information.
Found gcov version: 4.6.3
Processing gtest.dir/gtest/gmock_main.cc.gcda
geninfo: ERROR: /…/gmock_main.cc.gcno: reached unexpected end of file Reading tracefile coverage.info
lcov: ERROR: no valid records found in tracefile coverage.info

我认为使用 gcov-4.6.3 处理由 g++-4.8 生成的文件存在问题,但是我如何指定要使用哪个版本的 gcov?(我无法降级 g++)

答案1

我最终自己构建了 lcov-1.11,并将对的调用替换lcov${TRAVIS_BUILD_DIR}/lcov-1.11/bin/lcov --gcov-tool /usr/bin/gcov-4.8

这是一个完整的修复:

env:
  global:
    - BUILD_COVERAGE=${TRAVIS_BUILD_DIR}/coverage

after_success:
  # If GCC: compute code coverage and export it to coveralls
  - if [ "$CC" = "gcc-4.8" ];
    then
      cd ${TRAVIS_BUILD_DIR};
      wget http://downloads.sourceforge.net/ltp/lcov-1.11.tar.gz;
      tar xvfz lcov-1.11.tar.gz;
      make -C lcov-1.11;
      mkdir $BUILD_COVERAGE;
      cd $BUILD_COVERAGE;
      cmake ${TRAVIS_BUILD_DIR} -DBUILD_COVERAGE=ON;
      make check;
      ${TRAVIS_BUILD_DIR}/lcov-1.11/bin/lcov --gcov-tool /usr/bin/gcov-4.8  --capture --directory …;
    fi

相关内容