Я пытаюсь создать свой репозиторий мерзавца на travis-ci, и я думаю, что сталкиваюсь с конфликтом между 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 ++),
Я закончил тем, что создал 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