ich meine Tests wollen jedes Mal mein Projekt ins Leben gerufen werden soll, erfolgreich aufgebaut. Und wenn einige Tests kaputt sind, möchte ich, dass mein Build auch kaputt geht. Standardmäßig muss ich Tests manuell ausführen, indem Sie den Befehl ctest
ausführen. CTest kann tatsächlich ein Projekt erstellen, aber ich benutze IDE, die make
zum Erstellen von Quellen aufruft. Und make
führt keine Tests aus.Wie nach dem Bau mein Projekt mit cmake laufen ctest
Ich füge diesen Befehl, um meine Wurzel CMakeLists.txt Datei, aber es funktioniert nicht.
CMake gibt keine Fehler zurück und alles baut gut, aber mein benutzerdefinierter Befehl ruft nicht auf. Wie kann ich nach jedem erfolgreichen Build in CMake etwas ausführen?
Update:
Meine letzte 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 nennt add_test
und Testziel in einer Liste erinnert. Jeder Test in einem Projekt, der von dieser Funktion hinzugefügt wurde. 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 individuelle Ziel erstellt, die auf allen Unit-Tests in einem Projekt abhängt. Der benutzerdefinierte Befehl wird ausgeführt, nachdem das Ziel all_tests
erstellt wurde.
Danke für die Antwort - in Ihrem Makro, in 'add_test', ich glaube, Sie brauchen' $ {target_test} 'statt' target_test' – experquisite