CMAKE: create test target as early as possible

this allows us to remove some hacks around the non-existing target and its dependency modelling
master
Martin Gerhardy 2018-05-07 23:04:19 +02:00
parent d2f48792fb
commit 2e21b75d6b
4 changed files with 26 additions and 27 deletions

View File

@ -119,7 +119,6 @@ endif()
add_subdirectory(src)
if (UNITTESTS)
gtest_suite_end(tests)
generate_compute_shaders(tests test)
if (UNITTESTS_SANITIZER_THREADS)
set_target_properties(tests PROPERTIES COMPILE_FLAGS "${SANITIZE_THREAD_FLAG}")
set_target_properties(tests PROPERTIES LINK_FLAGS "${SANITIZE_THREAD_FLAG}")

View File

@ -186,12 +186,6 @@ macro(generate_db_models TARGET INPUT OUTPUT)
add_dependencies(codegen GenerateDatabaseModelBindings${TARGET})
endmacro()
macro(test_generate_db_models name INPUT OUTPUT)
get_property(list GLOBAL PROPERTY ${name}_Models)
list(APPEND list "${INPUT}:${OUTPUT}")
set_property(GLOBAL PROPERTY ${name}_Models ${list})
endmacro()
macro(generate_protocol TARGET)
set(files ${ARGV})
list(REMOVE_AT files 0)
@ -420,6 +414,28 @@ macro(gtest_suite_begin name)
endif()
set_property(GLOBAL PROPERTY ${name}_Sources "")
set_property(GLOBAL PROPERTY ${name}_Deps "")
if (NOT ${name}_NO_TEMPLATE)
set(main_path ${CMAKE_CURRENT_BINARY_DIR}/${name}_main.cpp)
if (${name}_TEMPLATE)
configure_file(${${name}_TEMPLATE} ${main_path})
else()
configure_file(${GOOGLETESTDIR}/main.cpp.in ${main_path})
endif()
add_executable(${name} ${main_path})
else()
add_executable(${name})
endif()
# add googletest lib dependency
find_package(GTest)
if (GTEST_FOUND)
target_include_directories(${name} PRIVATE ${GTEST_INCLUDE_DIRS})
target_link_libraries(${name} ${GTEST_LIBRARIES})
else()
target_link_libraries(${name} gtest)
endif()
endif()
endmacro()
@ -463,25 +479,8 @@ macro(gtest_suite_end name)
get_property(srcs GLOBAL PROPERTY ${name}_Sources)
get_property(deps GLOBAL PROPERTY ${name}_Deps)
if (NOT ${name}_NO_TEMPLATE)
set(main_path ${CMAKE_CURRENT_BINARY_DIR}/${name}_main.cpp)
if (${name}_TEMPLATE)
configure_file(${${name}_TEMPLATE} ${main_path})
else()
configure_file(${GOOGLETESTDIR}/main.cpp.in ${main_path})
endif()
list(APPEND srcs ${main_path})
endif()
target_sources(${name} PRIVATE ${srcs})
add_executable(${name} ${srcs})
# add googletest lib dependency
find_package(GTest)
if (GTEST_FOUND)
target_include_directories(${name} PRIVATE ${GTEST_INCLUDE_DIRS})
target_link_libraries(${name} ${GTEST_LIBRARIES})
else()
target_link_libraries(${name} gtest)
endif()
get_property(models GLOBAL PROPERTY ${name}_Models)
foreach(entry ${models})
string(REPLACE ":" ";" inout ${entry})

View File

@ -24,3 +24,4 @@ set(TEST_SRCS
gtest_suite_files(tests ${TEST_SRCS})
gtest_suite_deps(tests ${LIB})
generate_compute_shaders(tests test)

View File

@ -56,10 +56,10 @@ gtest_suite_files(tests ${TEST_SRCS})
gtest_suite_deps(tests ${LIB})
generate_db_models(${LIB} ${CMAKE_CURRENT_SOURCE_DIR}/tables.tbl PersistenceModels.h)
test_generate_db_models(tests ${CMAKE_CURRENT_SOURCE_DIR}/tests/tests.tbl TestModels.h)
generate_db_models(tests ${CMAKE_CURRENT_SOURCE_DIR}/tests/tests.tbl TestModels.h)
gtest_suite_begin(tests-${LIB} TEMPLATE ${ROOT_DIR}/src/modules/core/tests/main.cpp.in)
gtest_suite_files(tests-${LIB} ${TEST_SRCS} ../core/tests/AbstractTest.cpp)
gtest_suite_deps(tests-${LIB} ${LIB})
test_generate_db_models(tests-${LIB} ${CMAKE_CURRENT_SOURCE_DIR}/tests/tests.tbl TestModels.h)
generate_db_models(tests-${LIB} ${CMAKE_CURRENT_SOURCE_DIR}/tests/tests.tbl TestModels.h)
gtest_suite_end(tests-${LIB})