Jak uruchomić ctest po zbudowaniu projektu za pomocą cmake
Chcę, aby moje testy były uruchamiane za każdym razem, gdy mój projekt zostanie pomyślnie zbudowany. A jeśli niektóre testy zostaną przerwane, chcę, aby moja kompilacja również została złamana. Domyślnie muszę uruchomić testy ręcznie, uruchamiającctest
dowództwo. CTest może zbudować projekt, ale używam IDE, który wywołujemake
budować źródła. Imake
nie uruchamia testów.
Dodaję to polecenie do mojego pliku root CMakeLists.txt, ale to nie działa.
add_custom_command(OUTPUT tests.txt
POST_BUILD
COMMAND ctest --output-on-failure)
CMake nie zwraca żadnych błędów i wszystko działa poprawnie, ale moje polecenie niestandardowe nie wywołuje. Jak mogę uruchomić coś po każdej udanej kompilacji w CMake?
Aktualizacja:
Moje ostateczne rozwiązanie to ta funkcja:
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)
to dzwoniadd_test
i pamięta cel testowy na liście. Każdy test w projekcie dodany przez tę funkcję. W katalogu głównym CMakeLists.txt mam ten kod:
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}
)
Tworzy niestandardowy cel, który zależy od wszystkich testów jednostkowych w projekcie. Polecenie niestandardowe jest uruchamiane poall_tests
cel został zbudowany.