Cómo ejecutar ctest después de construir mi proyecto con cmake

Quiero que mis pruebas se inicien cada vez que mi proyecto se construya con éxito. Y si se rompen algunas pruebas, quiero que mi compilación también se rompa. Por defecto necesito ejecutar las pruebas manualmente ejecutandoctest mando. CTest realmente puede construir un proyecto, pero uso un IDE que invocamake para construir fuentes. Ymake no ejecuta pruebas.

Agrego este comando a mi archivo raíz CMakeLists.txt pero no funciona.

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

CMake no devuelve ningún error y todo funciona bien, pero mi comando personalizado no invoca. ¿Cómo puedo ejecutar algo después de cada compilación exitosa en CMake?

Actualizar:

Mi solución final es esta función:

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)

llamaadd_test y recuerda el objetivo de prueba en una lista. Cada prueba en un proyecto agregado por esta función. En la raíz CMakeLists.txt tengo este código:

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

Crea un objetivo personalizado que depende de todas las pruebas de unidad en un proyecto. El comando personalizado se ejecuta después deall_tests objetivo fue construido.

Respuestas a la pregunta(1)

Su respuesta a la pregunta