nix-templates/cpp/cmake/BuildHelpers.cmake
2025-05-03 21:44:04 +03:00

31 lines
909 B
CMake

include(CMakeParseArguments)
function(make_cc_test)
if (NOT ENABLE_TESTING)
return()
endif()
cmake_parse_arguments(MAKE_CC_TEST
""
"NAME"
"SRCS;DEPS;DATA"
${ARGN})
set(_NAME "${MAKE_CC_TEST_NAME}")
add_executable(${_NAME})
target_sources(${_NAME} PRIVATE ${MAKE_CC_TEST_SRCS})
target_link_libraries(${_NAME}
PRIVATE ${MAKE_CC_TEST_DEPS} gtest gmock gtest_main)
gtest_discover_tests(${_NAME})
file(RELATIVE_PATH _DEST_DIR ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
install(TARGETS ${_NAME} DESTINATION tests/${_DEST_DIR})
foreach (_DATA_FILE ${MAKE_CC_TEST_DATA})
get_filename_component(SUBPATH ${_DATA_FILE} DIRECTORY)
install(FILES ${_DATA_FILE} DESTINATION tests/${_DEST_DIR}/${SUBPATH})
configure_file(${_DATA_FILE} ${_DATA_FILE} COPYONLY)
endforeach()
endfunction()