Я пытаюсь запустить gcov в проекте, над которым я работаю, с помощью это руководство.
Я следовал инструкциям в руководстве и прочитал много сообщений, в том числе подробное руководство на этом сайте.
Но я не могу заставить это работать.
Я выполнил следующие шаги:
Мой основной CMakeLists.txt моего проекта находится в папке под названием cmake. Внутри этой папки я создал другую папку под названием CMakeModules и поместил внутрь файл CodeCoverage.cmake.
Я добавил этот код в свой CMakeLists.txt:
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules)
if (CMAKE_COMPILER_IS_GNUCXX)
include(CodeCoverage)
APPEND_COVERAGE_COMPILER_FLAGS()
SETUP_TARGET_FOR_COVERAGE(NAME coverage
EXECUTABLE
DEPENDENCIES coverage)
endif ()
Скомпилировал с помощью команд:
cmake -DCMAKE_BUILD_TYPE=DEBUG ../cmake
# (I'm compiling from a subfolder of the master folder)
make
make coverage
У меня возникает ошибка при запуске команды make coverage:
[100%] Resetting code coverage counters to zero.
Processing code coverage counters and generating report.
Errno architecture (x86_64-linux-thread-multi-4.6.4-301.fc24.x86_64) does not match executable architecture (x86_64-linux-thread-multi-4.12.9-300.fc26.x86_64) at /usr/lib64/perl5/Errno.pm line 11.
Compilation failed in require at /usr/share/perl5/vendor_perl/File/Temp.pm line 17.
BEGIN failed--compilation aborted at /usr/share/perl5/vendor_perl/File/Temp.pm line 17.
Compilation failed in require at /usr/bin/lcov line 66.
BEGIN failed--compilation aborted at /usr/bin/lcov line 66.
CMakeFiles/coverage.dir/build.make:57: set di istruzioni per l'obiettivo "CMakeFiles/coverage" non riuscito
make[3]: *** [CMakeFiles/coverage] Error 255
CMakeFiles/Makefile2:178: set di istruzioni per l'obiettivo "CMakeFiles/coverage.dir/all" non riuscito
make[2]: *** [CMakeFiles/coverage.dir/all] Errore 2
CMakeFiles/Makefile2:185: set di istruzioni per l'obiettivo "CMakeFiles/coverage.dir/rule" non riuscito
make[1]: *** [CMakeFiles/coverage.dir/rule] Errore 2
Makefile:214: set di istruzioni per l'obiettivo "coverage" non riuscito
make: *** [coverage] Errore 2
Мои вопросы:
Что именно я должен вставить в слот EXECUTABLE? Путь к исполняемому файлу, запускающему программу?
Настройку программы можно выполнить только по той строчке, которую я написал?
Я уже пробовал решение из других тем на этом сайте, но я не могу ничего, что могло бы подсказать мне, как это сделать.





Параметр EXECUTABLE должен определять, как что-то запускать в вашем коде и генерировать данные о покрытии.
Например, это должна быть инструкция, запускающая все ваши тесты.
Если вы определили тест с помощью ctest, попробуйте что-нибудь вроде:
SETUP_TARGET_FOR_COVERAGE(NAME coverage
EXECUTABLE ctest)
(или ctest --parallel n, если у вас много тестов и более одного процессора!)
Если у вас есть конкретная цель, которая запускает какой-то тест, попробуйте что-то вроде:
SETUP_TARGET_FOR_COVERAGE(NAME coverage
EXECUTABLE make target)
Надеюсь это поможет!
Спасибо, Махну! Теперь мне ясно! Ошибка заключалась в том, что я связывал исполняемый файл программы, поэтому он не работал!