forked from Mirrors/openclonk
Add helper function to create test binaries
parent
2b83c1c778
commit
184b36d08a
|
@ -11,7 +11,8 @@
|
|||
# To redistribute this file separately, substitute the full license texts
|
||||
# for the above references.
|
||||
|
||||
cmake_minimum_required (VERSION 2.6.0)
|
||||
cmake_minimum_required (VERSION 2.8.3)
|
||||
|
||||
project(openclonk_unittest)
|
||||
|
||||
# used by c4script and by the unit tests
|
||||
|
@ -23,23 +24,52 @@ set(C4SCRIPT_SOURCES
|
|||
../src/script/C4ScriptStandaloneStubs.cpp
|
||||
)
|
||||
|
||||
# Look for GTest's CMake project
|
||||
# Look for GTest and GMock
|
||||
# GMock's source package ships GTest too, so look for it first
|
||||
find_path(GMOCK_ROOT
|
||||
NAMES "src/gmock-all.cc" "gmock/gmock-all.cc"
|
||||
PATHS "/usr/src/gmock"
|
||||
)
|
||||
find_path(GMOCK_INCLUDE_DIR
|
||||
NAMES "gmock/gmock.h"
|
||||
HINTS "${GMOCK_ROOT}"
|
||||
PATH_SUFFIXES "include"
|
||||
)
|
||||
find_file(GMOCK_SOURCE_ALL
|
||||
NAMES "gmock-all.cc"
|
||||
HINTS "${GMOCK_ROOT}"
|
||||
PATH_SUFFIXES "src" "gtest"
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
find_path(GTEST_ROOT
|
||||
NAMES src/gtest-all.cc gtest/gtest-all.cc
|
||||
PATHS /usr/src/gtest
|
||||
NAMES "src/gtest-all.cc" "gtest/gtest-all.cc"
|
||||
PATHS "${GMOCK_ROOT}" "/usr/src/gtest"
|
||||
)
|
||||
find_path(GTEST_INCLUDE_DIR
|
||||
NAMES gtest/gtest.h
|
||||
NAMES "gtest/gtest.h"
|
||||
HINTS "${GTEST_ROOT}"
|
||||
PATH_SUFFIXES "include"
|
||||
)
|
||||
find_file(GTEST_SOURCE_ALL
|
||||
NAMES gtest-all.cc
|
||||
NAMES "gtest-all.cc"
|
||||
HINTS "${GTEST_ROOT}"
|
||||
PATH_SUFFIXES src gtest
|
||||
PATH_SUFFIXES "src" "gtest"
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
if (GMOCK_SOURCE_ALL AND GMOCK_INCLUDE_DIR)
|
||||
add_library(gmock STATIC
|
||||
"${GMOCK_SOURCE_ALL}"
|
||||
"${GMOCK_INCLUDE_DIR}/gmock/gmock.h"
|
||||
)
|
||||
if (GMOCK_ROOT)
|
||||
include_directories("${GMOCK_ROOT}")
|
||||
endif()
|
||||
include_directories("${GMOCK_INCLUDE_DIR}")
|
||||
set(GMOCK_FOUND 1)
|
||||
endif()
|
||||
|
||||
if (GTEST_SOURCE_ALL AND GTEST_INCLUDE_DIR)
|
||||
add_library(gtest STATIC
|
||||
"${GTEST_SOURCE_ALL}"
|
||||
|
@ -52,7 +82,19 @@ if (GTEST_SOURCE_ALL AND GTEST_INCLUDE_DIR)
|
|||
set(GTEST_FOUND 1)
|
||||
endif()
|
||||
|
||||
if (GTEST_FOUND)
|
||||
include(CMakeParseArguments)
|
||||
function(create_test testName)
|
||||
set(oneValueArgs "")
|
||||
set(multiValueArgs SOURCES LIBRARIES)
|
||||
CMAKE_PARSE_ARGUMENTS(CT "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||
add_executable("${testName}" ${CT_SOURCES} main.cpp)
|
||||
target_link_libraries("${testName}" gtest ${CT_LIBRARIES})
|
||||
add_test(NAME "${testName}" COMMAND "${testName}")
|
||||
endfunction()
|
||||
|
||||
if (GTEST_FOUND AND GMOCK_FOUND)
|
||||
enable_testing()
|
||||
|
||||
AUX_SOURCE_DIRECTORY("${CMAKE_CURRENT_LIST_DIR}" TESTS_SOURCES)
|
||||
add_executable(tests ${TESTS_SOURCES} ${C4SCRIPT_SOURCES})
|
||||
target_link_libraries(tests gtest libc4script libmisc)
|
||||
|
@ -73,5 +115,11 @@ else()
|
|||
if (NOT GTEST_SOURCE_ALL)
|
||||
set(_gtest_missing "${_gtest_missing} gtest-all.cc")
|
||||
endif()
|
||||
message(STATUS "Could NOT find Gtest (missing:${_gtest_missing})")
|
||||
if (NOT GMOCK_INCLUDE_DIR)
|
||||
set(_gtest_missing "${_gtest_missing} gmock/gmock.h")
|
||||
endif()
|
||||
if (NOT GMOCK_SOURCE_ALL)
|
||||
set(_gtest_missing "${_gtest_missing} gmock-all.cc")
|
||||
endif()
|
||||
message(STATUS "Could NOT find GTest/GMock (missing:${_gtest_missing})")
|
||||
endif()
|
||||
|
|
Loading…
Reference in New Issue