CMAKE: added option to enable/disable unittests
parent
5d3075ace9
commit
53928538f6
|
@ -6,6 +6,7 @@ set(SCRIPTS_CMAKE_DIR ${PROJECT_SOURCE_DIR}/cmake)
|
|||
include(${SCRIPTS_CMAKE_DIR}/common.cmake)
|
||||
include(${SCRIPTS_CMAKE_DIR}/macros.cmake)
|
||||
|
||||
option(UNITTESTS "Builds with tests" ON)
|
||||
option(TOOLS "Builds with tools" ON)
|
||||
option(USE_CCACHE "Use ccache" ON)
|
||||
|
||||
|
|
|
@ -196,16 +196,18 @@ set(GOOGLETESTDIR ${CMAKE_CURRENT_LIST_DIR})
|
|||
# Begin defining a unit test suite.
|
||||
#
|
||||
macro(gtest_suite_begin name)
|
||||
set(options NO_TEMPLATE)
|
||||
set(oneValueArgs TEMPLATE)
|
||||
set(multiValueArgs)
|
||||
cmake_parse_arguments(${name} "${options}" "${oneValueArgs}" "" ${ARGN})
|
||||
if (UNITTESTS)
|
||||
set(options NO_TEMPLATE)
|
||||
set(oneValueArgs TEMPLATE)
|
||||
set(multiValueArgs)
|
||||
cmake_parse_arguments(${name} "${options}" "${oneValueArgs}" "" ${ARGN})
|
||||
|
||||
if (${name}_UNPARSED_ARGUMENTS)
|
||||
message(FATAL_ERROR "gtest_suite_begin(): called with invalid args '${${name}_UNPARSED_ARGUMENTS}'")
|
||||
if (${name}_UNPARSED_ARGUMENTS)
|
||||
message(FATAL_ERROR "gtest_suite_begin(): called with invalid args '${${name}_UNPARSED_ARGUMENTS}'")
|
||||
endif()
|
||||
set_property(GLOBAL PROPERTY ${name}_Sources "")
|
||||
set_property(GLOBAL PROPERTY ${name}_Deps "")
|
||||
endif()
|
||||
set_property(GLOBAL PROPERTY ${name}_Sources "")
|
||||
set_property(GLOBAL PROPERTY ${name}_Deps "")
|
||||
endmacro()
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@ -213,13 +215,15 @@ endmacro()
|
|||
# Adds files to a test suite
|
||||
#
|
||||
macro(gtest_suite_files name)
|
||||
set(ARG_LIST ${ARGV})
|
||||
list(REMOVE_AT ARG_LIST 0)
|
||||
get_property(list GLOBAL PROPERTY ${name}_Sources)
|
||||
foreach(entry ${ARG_LIST})
|
||||
list(APPEND list ${CMAKE_CURRENT_SOURCE_DIR}/${entry})
|
||||
endforeach()
|
||||
set_property(GLOBAL PROPERTY ${name}_Sources ${list})
|
||||
if (UNITTESTS)
|
||||
set(ARG_LIST ${ARGV})
|
||||
list(REMOVE_AT ARG_LIST 0)
|
||||
get_property(list GLOBAL PROPERTY ${name}_Sources)
|
||||
foreach(entry ${ARG_LIST})
|
||||
list(APPEND list ${CMAKE_CURRENT_SOURCE_DIR}/${entry})
|
||||
endforeach()
|
||||
set_property(GLOBAL PROPERTY ${name}_Sources ${list})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@ -227,11 +231,13 @@ endmacro()
|
|||
# Adds files to a test suite
|
||||
#
|
||||
macro(gtest_suite_deps name)
|
||||
set(ARG_LIST ${ARGV})
|
||||
list(REMOVE_AT ARG_LIST 0)
|
||||
get_property(list GLOBAL PROPERTY ${name}_Deps)
|
||||
list(APPEND list ${ARG_LIST})
|
||||
set_property(GLOBAL PROPERTY ${name}_Deps ${list})
|
||||
if (UNITTESTS)
|
||||
set(ARG_LIST ${ARGV})
|
||||
list(REMOVE_AT ARG_LIST 0)
|
||||
get_property(list GLOBAL PROPERTY ${name}_Deps)
|
||||
list(APPEND list ${ARG_LIST})
|
||||
set_property(GLOBAL PROPERTY ${name}_Deps ${list})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@ -239,28 +245,30 @@ endmacro()
|
|||
# End defining a unittest suite
|
||||
#
|
||||
macro(gtest_suite_end name)
|
||||
project(${name} cmdline)
|
||||
get_property(srcs GLOBAL PROPERTY ${name}_Sources)
|
||||
get_property(deps GLOBAL PROPERTY ${name}_Deps)
|
||||
if (UNITTESTS)
|
||||
project(${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(${FIPS_GOOGLETESTDIR}/main.cpp.in ${main_path})
|
||||
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(${FIPS_GOOGLETESTDIR}/main.cpp.in ${main_path})
|
||||
endif()
|
||||
list(APPEND srcs ${main_path})
|
||||
endif()
|
||||
list(APPEND srcs ${main_path})
|
||||
|
||||
add_executable(${name} ${srcs})
|
||||
# add googletest lib dependency
|
||||
target_link_libraries(${name} gtest ${deps})
|
||||
# generate a command line app
|
||||
set_target_properties(${name} PROPERTIES FOLDER "tests")
|
||||
|
||||
# add as cmake unit test
|
||||
add_test(NAME ${name} COMMAND ${name})
|
||||
endif()
|
||||
|
||||
add_executable(${name} ${srcs})
|
||||
# add googletest lib dependency
|
||||
target_link_libraries(${name} gtest ${deps})
|
||||
# generate a command line app
|
||||
set_target_properties(${name} PROPERTIES FOLDER "tests")
|
||||
|
||||
# add as cmake unit test
|
||||
add_test(NAME ${name} COMMAND ${name})
|
||||
endmacro()
|
||||
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue