2013-10-23 14 views
8

Ich habe ein C++ - Projekt in CMake und ich habe Komponententests implementiert (mit GoogleTest) sowie Integrationstests, d. H. Ausführen von Anwendungen und Überprüfen der Ergebnisse mit Regexp z.Wie mit CMake testen, dass eine C++ - Anwendung keine Speicherfehler hat?

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

Nun möchte ich das gleiche wie oben, aber die Anwendung ausführen, um Speicherfehler zu erkennen, z. einfach ./my_application ausführen und mit valgrind nach Speicherfehlern suchen. Wie kann ich das machen? Beachten Sie, dass ich ctest -D ExperimentalMemCheck und ctest -T memcheck kenne, aber hier endet der Fehler Cannot find file DartConfiguration.tcl, der mit der Dashboard-Konfiguration verwandt scheint, die ich nicht benötige.

Antwort

4

OK Ich habe eine mögliche Lösung gefunden. Addiert man diese Zeilen zu meinem CMakeLists.txt:

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

die benötigten DartConfiguration.tcl erzeugt, was das heißt, und dann wieder rufenden:

ctest -T memcheck 

Läufe alle Tests auch für Speicherfehler zu prüfen.