Использование lcov с gcc-8 - PullRequest
       16

Использование lcov с gcc-8

0 голосов
/ 28 августа 2018

Я пытаюсь определить свое тестовое покрытие. Для этого я компилирую свою программу с более новой версией gcc:

CC=/usr/local/gcc8/bin/gcc  FC=/usr/local/gcc8/bin/gfortran ./configure.sh  -external cmake -d

После компиляции с опцией --coverage я запускаю свои тесты, и это создает файлы *.gcda, *.gcno и *.o.provides.build. И если я запускаю что-то вроде:

> $ /usr/local/gcc8/bin/gcov slab_dim.f90.gcda                                                                             [±develop ●]
File '/Local/tmp/fleur/cdn/slab_dim.f90'
Lines executed:0.00% of 17
Creating 'slab_dim.f90.gcov'

Что показывает мне, что gcov работает нормально. Однако, если я попытаюсь запустить lcov для этих результатов:

lcov -t "result" -o ex_test.info -c -d CMakeFiles/

Я получаю сообщения об ошибках, подобные этим, для каждого файла:

Processing fleur.dir/hybrid/gen_wavf.F90.gcda
/Local/tmp/fleur/build.debug/CMakeFiles/fleur.dir/hybrid/gen_wavf.F90.gcno:version 'A82*', prefer '408R'
/Local/tmp/fleur/build.debug/CMakeFiles/fleur.dir/hybrid/gen_wavf.F90.gcno:no functions found
geninfo: WARNING: gcov did not create any files for /Local/tmp/fleur/build.debug/CMakeFiles/fleur.dir/hybrid/gen_wavf.F90.gcda!

Это то же сообщение об ошибке, которое появляется при использовании системного стандарта /usr/bin/gcov

Это наводит меня на мысль, что lcov называет старый gcov, а не новый. Как заставить gcov использовать новую версию?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Источник ошибки понятен из того факта, что вы получаете тот же результат, используя / usr / bin / gcov. / usr / bin / gcov должна быть ссылкой на двоичный файл из установленного компилятора, но в вашем случае ссылка не указывает на двоичный файл при установке gcc 8.2.

Вы можете удалить ссылку и воссоздать ее, чтобы она указала на правильный gcov, или вы можете настроить что-то вроде альтернатив альтернатив обновления для изменения версии gcov при изменении компилятора по умолчанию.

Предыдущий ответ также должен работать, если у вас есть двоичный файл с именем gcov в / usr / local / gcc8 / bin, потому что, если вы добавите этот путь, сначала в PATH вашей среды, он будет выбран первым.

0 голосов
/ 29 августа 2018

Переменная среды $PATH должна быть расширена на /usr/local/gcc8/bin/

...