Как сделать зависимость в cmake, чтобы при запуске кастомной команды происходил build?

У меня есть CMakeLists.txt - основной. Если этот CMakeLists запускается с аргументом DENABLE_UNIT_TESTS=ON то создается make file для сборки тестов и в нем у меня есть такого плана команда:

add_custom_target(check 
                  COMMENT "Run Tests"
                  COMMAND ${CMAKE_CTEST_COMMAND}
                  )

Весь cmake для тестов

cmake_minimum_required(VERSION 3.0.0)
project(Tests VERSION 0.1.0)


message(STATUS "Compiling tests ...")
enable_testing()

file(GLOB TEST_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}  "*.cpp")
include_directories(${SDL2_INCLUDE_DIRS} 
                    ${SDL2_IMAGE_INCLUDE_DIRS}
                    "../headers/")
foreach(TEST_SRC_NAME ${TEST_SOURCES})
    get_filename_component(EXECUTABLE_NAME 
                           ${TEST_SRC_NAME} 
                           NAME_WE)
    add_executable(${EXECUTABLE_NAME} ${TEST_SRC_NAME})
    target_link_libraries(${EXECUTABLE_NAME}
                          gtest
                          pthread
                          gtest_main
                          ${SDL2_LIBRARIES} 
                          ${SDL2_IMAGE_LIBRARIES} 
                          )
    add_test(NAME ${EXECUTABLE_NAME}
             WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
             COMMAND ${EXECUTABLE_NAME})
endforeach(TEST_SRC_NAME ${TEST_SOURCES})
include(GoogleTest)

add_custom_target(check 
                  COMMAND /usr/bin/./make -j4
                  COMMENT "Run Tests"
                  COMMAND ${CMAKE_CTEST_COMMAND}
                  ) #TODO: fix DEPENDS

Как сделать так, чтобы при запуске make check, если тесты еще не собраны, то cmake сначала билдил тесты, а затем их запускал? Я добавил вот эту команду:

COMMAND /usr/bin/./make -j4

но как такой механзм реализовывать правильно?


Ответы (0 шт):