Como executar o ctest após construir meu projeto com o cmake

Eu quero que meus testes sejam lançados toda vez que meu projeto for construído com sucesso. E se alguns testes forem quebrados, também quero que meu build seja quebrado. Por padrão, preciso executar testes manualmente executandoctest comando. CTest pode realmente construir projeto, mas eu uso IDE que invocamake para construir fontes. Emake não executa testes.

Eu adiciono este comando ao meu arquivo CMakeLists.txt raiz, mas não funciona.

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

O CMake não retorna nenhum erro e tudo fica bem, mas meu comando personalizado não é invocado. Como posso executar algo após cada compilação bem-sucedida no CMake?

Atualizar:

Minha solução final é essa função:

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)

chamaadd_test e lembra o alvo de teste em uma lista. Cada teste em um projeto adicionado por esta função. Na raiz CMakeLists.txt eu tenho 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}
)

Ele cria um destino personalizado que depende de todos os testes de unidade em um projeto. Comando customizado é executado apósall_tests alvo foi construído.

questionAnswers(1)

yourAnswerToTheQuestion