Как запустить ctest после сборки моего проекта с помощью cmake

Я хочу, чтобы мои тесты запускались каждый раз, когда мой проект был успешно построен. И если некоторые тесты не пройдены, я хочу, чтобы моя сборка тоже была повреждена. По умолчанию мне нужно запустить тесты вручную, запустивctest команда. CTest может на самом деле построить проект, но я использую IDE, которая вызываетmake строить источники. А такжеmake не запускает тесты.

Я добавляю эту команду в мой корневой файл CMakeLists.txt, но она не работает.

add_custom_command(OUTPUT tests.txt 
                   POST_BUILD
                   COMMAND ctest --output-on-failure)

CMake не возвращает никаких ошибок, и все работает нормально, но моя пользовательская команда не запускается. Как я могу запустить что-то после каждой успешной сборки в CMake?

Обновить:

Мое окончательное решение - эта функция:

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)

это вызываетadd_test и запоминает цель теста в списке. Каждый тест в проекте добавляется этой функцией. В корне CMakeLists.txt у меня есть этот код:

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}
)

Он создает пользовательскую цель, которая зависит от всех модульных тестов в проекте. Пользовательская команда запускается послеall_tests цель была построена.

Ответы на вопрос(1)

Ваш ответ на вопрос