Как проверить с помощью CMake, что приложение C ++ не имеет ошибок памяти?

У меня есть проект на C ++ в CMake, и я реализовал модульные тесты (используя GoogleTest), а также интеграционные тесты, то есть выполнение приложений и проверку результатов с помощью regexp, например.

add_test(NAME MyAppIntegration.testRefitRunMse COMMAND my_application "--refit=true")
set_tests_properties(MyAppIntegration.testRefitRunMse PROPERTIES PASS_REGULAR_EXPRESSION "mse\\=1\\.53611e\\-05")

Теперь я хотел бы сделать то же самое, что и выше, но запустить приложение для обнаружения ошибок памяти, например. просто беги ./my_application и проверьте наличие ошибок памяти с помощью valgrind. Как я могу это сделать? Обратите внимание, что я в курсе ctest -D ExperimentalMemCheck а также ctest -T memcheck но здесь я в конечном итоге с ошибкой Cannot find file DartConfiguration.tcl который связан с конфигурацией Dashboard, которая мне не нужна.

8

Решение

ОК, я нашел возможное решение. Добавление этих строк в мой CMakeLists.txt:

## valgrind
find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
INCLUDE(Dart)

генерирует необходимый DartConfiguration.tcl что бы это ни было, а затем повторно вызвать:

ctest -T memcheck

запускает все тесты, а также проверяет наличие ошибок памяти.

4

Другие решения

Других решений пока нет …