Как сделать зависимость в 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
но как такой механзм реализовывать правильно?