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.

questionAnswers(1)

yourAnswerToTheQuestion