CMAKE: create test target as early as possible
this allows us to remove some hacks around the non-existing target and its dependency modellingmaster
parent
d2f48792fb
commit
2e21b75d6b
|
@ -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}")
|
||||
|
|
|
@ -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})
|
||||
|
|
|
@ -24,3 +24,4 @@ set(TEST_SRCS
|
|||
|
||||
gtest_suite_files(tests ${TEST_SRCS})
|
||||
gtest_suite_deps(tests ${LIB})
|
||||
generate_compute_shaders(tests test)
|
||||
|
|
|
@ -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})
|
||||
|
|
Loading…
Reference in New Issue