So führen Sie ctest aus, nachdem Sie mein Projekt mit cmake erstellt haben
Ich möchte, dass meine Tests jedes Mal gestartet werden, wenn mein Projekt erfolgreich erstellt wurde. Und wenn einige Tests kaputt sind, möchte ich, dass mein Build auch kaputt ist. Standardmäßig muss ich Tests manuell ausführenctest
Befehl. CTest kann tatsächlich ein Projekt erstellen, aber ich verwende eine IDE, die aufruftmake
Quellen zu bauen. Undmake
führt keine Tests durch.
Ich füge diesen Befehl meiner Stammdatei CMakeLists.txt hinzu, aber er funktioniert nicht.
add_custom_command(OUTPUT tests.txt
POST_BUILD
COMMAND ctest --output-on-failure)
CMake gibt keine Fehler zurück und alles funktioniert einwandfrei, aber mein benutzerdefinierter Befehl wird nicht aufgerufen. Wie kann ich nach jedem erfolgreichen Build in CMake etwas ausführen?
Aktualisieren:
Meine endgültige Lösung ist diese Funktion:
macro(add_unit_test target target_test)
set(UNIT_TEST_TARGETS ${UNIT_TEST_TARGETS} ${target_test} PARENT_SCOPE)
add_test(target ${CMAKE_CURRENT_BINARY_DIR}/target_test)
endmacro(add_unit_test)
es ruftadd_test
und speichert das Testziel in einer Liste. Jeder Test in einem Projekt, der von dieser Funktion hinzugefügt wird. In der Wurzel CMakeLists.txt habe ich diesen Code:
add_custom_target( all_tests ALL
DEPENDS ${UNIT_TEST_TARGETS}
)
add_custom_command(TARGET all_tests
COMMENT "Run tests"
POST_BUILD COMMAND ctest ARGS --output-on-failure
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
Es wird ein benutzerdefiniertes Ziel erstellt, das von allen Komponententests in einem Projekt abhängt. Der benutzerdefinierte Befehl wird nach ausgeführtall_tests
Ziel wurde gebaut.