Googletest export
Internal Change PiperOrigin-RevId: 212656679
This commit is contained in:
parent
5131cf737c
commit
e1b8d82fa6
@ -1,233 +0,0 @@
|
|||||||
########################################################################
|
|
||||||
# CMake build script for Google Mock.
|
|
||||||
#
|
|
||||||
# To run the tests for Google Mock itself on Linux, use 'make test' or
|
|
||||||
# ctest. You can select which tests to run using 'ctest -R regex'.
|
|
||||||
# For more options, run 'ctest --help'.
|
|
||||||
|
|
||||||
option(gmock_build_tests "Build all of Google Mock's own tests." OFF)
|
|
||||||
|
|
||||||
# A directory to find Google Test sources.
|
|
||||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/gtest/CMakeLists.txt")
|
|
||||||
set(gtest_dir gtest)
|
|
||||||
else()
|
|
||||||
set(gtest_dir ../googletest)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
|
|
||||||
include("${gtest_dir}/cmake/hermetic_build.cmake" OPTIONAL)
|
|
||||||
|
|
||||||
if (COMMAND pre_project_set_up_hermetic_build)
|
|
||||||
# Google Test also calls hermetic setup functions from add_subdirectory,
|
|
||||||
# although its changes will not affect things at the current scope.
|
|
||||||
pre_project_set_up_hermetic_build()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Project-wide settings
|
|
||||||
|
|
||||||
# Name of the project.
|
|
||||||
#
|
|
||||||
# CMake files in this project can refer to the root source directory
|
|
||||||
# as ${gmock_SOURCE_DIR} and to the root binary directory as
|
|
||||||
# ${gmock_BINARY_DIR}.
|
|
||||||
# Language "C" is required for find_package(Threads).
|
|
||||||
if (CMAKE_VERSION VERSION_LESS 3.0)
|
|
||||||
project(gmock CXX C)
|
|
||||||
else()
|
|
||||||
cmake_policy(SET CMP0048 NEW)
|
|
||||||
project(gmock VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C)
|
|
||||||
endif()
|
|
||||||
cmake_minimum_required(VERSION 2.6.4)
|
|
||||||
|
|
||||||
if (COMMAND set_up_hermetic_build)
|
|
||||||
set_up_hermetic_build()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Instructs CMake to process Google Test's CMakeLists.txt and add its
|
|
||||||
# targets to the current scope. We are placing Google Test's binary
|
|
||||||
# directory in a subdirectory of our own as VC compilation may break
|
|
||||||
# if they are the same (the default).
|
|
||||||
add_subdirectory("${gtest_dir}" "${gmock_BINARY_DIR}/gtest")
|
|
||||||
|
|
||||||
|
|
||||||
# These commands only run if this is the main project
|
|
||||||
if(CMAKE_PROJECT_NAME STREQUAL "gmock" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")
|
|
||||||
# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
|
|
||||||
# make it prominent in the GUI.
|
|
||||||
option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
|
|
||||||
else()
|
|
||||||
mark_as_advanced(gmock_build_tests)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Although Google Test's CMakeLists.txt calls this function, the
|
|
||||||
# changes there don't affect the current scope. Therefore we have to
|
|
||||||
# call it again here.
|
|
||||||
config_compiler_and_linker() # from ${gtest_dir}/cmake/internal_utils.cmake
|
|
||||||
|
|
||||||
# Adds Google Mock's and Google Test's header directories to the search path.
|
|
||||||
set(gmock_build_include_dirs
|
|
||||||
"${gmock_SOURCE_DIR}/include"
|
|
||||||
"${gmock_SOURCE_DIR}"
|
|
||||||
"${gtest_SOURCE_DIR}/include"
|
|
||||||
# This directory is needed to build directly from Google Test sources.
|
|
||||||
"${gtest_SOURCE_DIR}")
|
|
||||||
include_directories(${gmock_build_include_dirs})
|
|
||||||
|
|
||||||
# Summary of tuple support for Microsoft Visual Studio:
|
|
||||||
# Compiler version(MS) version(cmake) Support
|
|
||||||
# ---------- ----------- -------------- -----------------------------
|
|
||||||
# <= VS 2010 <= 10 <= 1600 Use Google Tests's own tuple.
|
|
||||||
# VS 2012 11 1700 std::tr1::tuple + _VARIADIC_MAX=10
|
|
||||||
# VS 2013 12 1800 std::tr1::tuple
|
|
||||||
# VS 2015 14 1900 std::tuple
|
|
||||||
# VS 2017 15 >= 1910 std::tuple
|
|
||||||
if (MSVC AND MSVC_VERSION EQUAL 1700)
|
|
||||||
add_definitions(/D _VARIADIC_MAX=10)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Defines the gmock & gmock_main libraries. User tests should link
|
|
||||||
# with one of them.
|
|
||||||
|
|
||||||
# Google Mock libraries. We build them using more strict warnings than what
|
|
||||||
# are used for other targets, to ensure that Google Mock can be compiled by
|
|
||||||
# a user aggressive about warnings.
|
|
||||||
if (MSVC)
|
|
||||||
cxx_library(gmock
|
|
||||||
"${cxx_strict}"
|
|
||||||
"${gtest_dir}/src/gtest-all.cc"
|
|
||||||
src/gmock-all.cc)
|
|
||||||
|
|
||||||
cxx_library(gmock_main
|
|
||||||
"${cxx_strict}"
|
|
||||||
"${gtest_dir}/src/gtest-all.cc"
|
|
||||||
src/gmock-all.cc
|
|
||||||
src/gmock_main.cc)
|
|
||||||
else()
|
|
||||||
cxx_library(gmock "${cxx_strict}" src/gmock-all.cc)
|
|
||||||
target_link_libraries(gmock PUBLIC gtest)
|
|
||||||
cxx_library(gmock_main "${cxx_strict}" src/gmock_main.cc)
|
|
||||||
target_link_libraries(gmock_main PUBLIC gmock)
|
|
||||||
endif()
|
|
||||||
# If the CMake version supports it, attach header directory information
|
|
||||||
# to the targets for when we are part of a parent build (ie being pulled
|
|
||||||
# in via add_subdirectory() rather than being a standalone build).
|
|
||||||
if (DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
|
|
||||||
target_include_directories(gmock SYSTEM INTERFACE
|
|
||||||
"$<BUILD_INTERFACE:${gmock_build_include_dirs}>"
|
|
||||||
"$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
|
|
||||||
target_include_directories(gmock_main SYSTEM INTERFACE
|
|
||||||
"$<BUILD_INTERFACE:${gmock_build_include_dirs}>"
|
|
||||||
"$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Install rules
|
|
||||||
install_project(gmock gmock_main)
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Google Mock's own tests.
|
|
||||||
#
|
|
||||||
# You can skip this section if you aren't interested in testing
|
|
||||||
# Google Mock itself.
|
|
||||||
#
|
|
||||||
# The tests are not built by default. To build them, set the
|
|
||||||
# gmock_build_tests option to ON. You can do it by running ccmake
|
|
||||||
# or specifying the -Dgmock_build_tests=ON flag when running cmake.
|
|
||||||
|
|
||||||
if (gmock_build_tests)
|
|
||||||
# This must be set in the root directory for the tests to be run by
|
|
||||||
# 'make test' or ctest.
|
|
||||||
enable_testing()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
# C++ tests built with standard compiler flags.
|
|
||||||
|
|
||||||
cxx_test(gmock-actions_test gmock_main)
|
|
||||||
cxx_test(gmock-cardinalities_test gmock_main)
|
|
||||||
cxx_test(gmock_ex_test gmock_main)
|
|
||||||
cxx_test(gmock-generated-actions_test gmock_main)
|
|
||||||
cxx_test(gmock-generated-function-mockers_test gmock_main)
|
|
||||||
cxx_test(gmock-generated-internal-utils_test gmock_main)
|
|
||||||
cxx_test(gmock-generated-matchers_test gmock_main)
|
|
||||||
cxx_test(gmock-internal-utils_test gmock_main)
|
|
||||||
cxx_test(gmock-matchers_test gmock_main)
|
|
||||||
cxx_test(gmock-more-actions_test gmock_main)
|
|
||||||
cxx_test(gmock-nice-strict_test gmock_main)
|
|
||||||
cxx_test(gmock-port_test gmock_main)
|
|
||||||
cxx_test(gmock-spec-builders_test gmock_main)
|
|
||||||
cxx_test(gmock_link_test gmock_main test/gmock_link2_test.cc)
|
|
||||||
cxx_test(gmock_test gmock_main)
|
|
||||||
|
|
||||||
if (DEFINED GTEST_HAS_PTHREAD)
|
|
||||||
cxx_test(gmock_stress_test gmock)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# gmock_all_test is commented to save time building and running tests.
|
|
||||||
# Uncomment if necessary.
|
|
||||||
# cxx_test(gmock_all_test gmock_main)
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
# C++ tests built with non-standard compiler flags.
|
|
||||||
|
|
||||||
if (MSVC)
|
|
||||||
cxx_library(gmock_main_no_exception "${cxx_no_exception}"
|
|
||||||
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
|
||||||
|
|
||||||
cxx_library(gmock_main_no_rtti "${cxx_no_rtti}"
|
|
||||||
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
|
||||||
|
|
||||||
if (MSVC_VERSION LESS 1600) # 1600 is Visual Studio 2010.
|
|
||||||
# Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that
|
|
||||||
# conflict with our own definitions. Therefore using our own tuple does not
|
|
||||||
# work on those compilers.
|
|
||||||
cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}"
|
|
||||||
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
|
||||||
|
|
||||||
cxx_test_with_flags(gmock_use_own_tuple_test "${cxx_use_own_tuple}"
|
|
||||||
gmock_main_use_own_tuple test/gmock-spec-builders_test.cc)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
cxx_library(gmock_main_no_exception "${cxx_no_exception}" src/gmock_main.cc)
|
|
||||||
target_link_libraries(gmock_main_no_exception PUBLIC gmock)
|
|
||||||
|
|
||||||
cxx_library(gmock_main_no_rtti "${cxx_no_rtti}" src/gmock_main.cc)
|
|
||||||
target_link_libraries(gmock_main_no_rtti PUBLIC gmock)
|
|
||||||
|
|
||||||
cxx_library(gmock_main_use_own_tuple "${cxx_use_own_tuple}" src/gmock_main.cc)
|
|
||||||
target_link_libraries(gmock_main_use_own_tuple PUBLIC gmock)
|
|
||||||
endif()
|
|
||||||
cxx_test_with_flags(gmock-more-actions_no_exception_test "${cxx_no_exception}"
|
|
||||||
gmock_main_no_exception test/gmock-more-actions_test.cc)
|
|
||||||
|
|
||||||
cxx_test_with_flags(gmock_no_rtti_test "${cxx_no_rtti}"
|
|
||||||
gmock_main_no_rtti test/gmock-spec-builders_test.cc)
|
|
||||||
|
|
||||||
cxx_shared_library(shared_gmock_main "${cxx_default}"
|
|
||||||
"${gtest_dir}/src/gtest-all.cc" src/gmock-all.cc src/gmock_main.cc)
|
|
||||||
|
|
||||||
# Tests that a binary can be built with Google Mock as a shared library. On
|
|
||||||
# some system configurations, it may not possible to run the binary without
|
|
||||||
# knowing more details about the system configurations. We do not try to run
|
|
||||||
# this binary. To get a more robust shared library coverage, configure with
|
|
||||||
# -DBUILD_SHARED_LIBS=ON.
|
|
||||||
cxx_executable_with_flags(shared_gmock_test_ "${cxx_default}"
|
|
||||||
shared_gmock_main test/gmock-spec-builders_test.cc)
|
|
||||||
set_target_properties(shared_gmock_test_
|
|
||||||
PROPERTIES
|
|
||||||
COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
# Python tests.
|
|
||||||
|
|
||||||
cxx_executable(gmock_leak_test_ test gmock_main)
|
|
||||||
py_test(gmock_leak_test)
|
|
||||||
|
|
||||||
cxx_executable(gmock_output_test_ test gmock)
|
|
||||||
py_test(gmock_output_test)
|
|
||||||
endif()
|
|
@ -1,10 +0,0 @@
|
|||||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
|
||||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
|
||||||
|
|
||||||
Name: gmock
|
|
||||||
Description: GoogleMock (without main() function)
|
|
||||||
Version: @PROJECT_VERSION@
|
|
||||||
URL: https://github.com/google/googletest
|
|
||||||
Requires: gtest
|
|
||||||
Libs: -L${libdir} -lgmock @CMAKE_THREAD_LIBS_INIT@
|
|
||||||
Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@
|
|
@ -1,10 +0,0 @@
|
|||||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
|
||||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
|
||||||
|
|
||||||
Name: gmock_main
|
|
||||||
Description: GoogleMock (with main() function)
|
|
||||||
Version: @PROJECT_VERSION@
|
|
||||||
URL: https://github.com/google/googletest
|
|
||||||
Requires: gmock
|
|
||||||
Libs: -L${libdir} -lgmock_main @CMAKE_THREAD_LIBS_INIT@
|
|
||||||
Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@
|
|
@ -1,331 +0,0 @@
|
|||||||
########################################################################
|
|
||||||
# CMake build script for Google Test.
|
|
||||||
#
|
|
||||||
# To run the tests for Google Test itself on Linux, use 'make test' or
|
|
||||||
# ctest. You can select which tests to run using 'ctest -R regex'.
|
|
||||||
# For more options, run 'ctest --help'.
|
|
||||||
|
|
||||||
# When other libraries are using a shared version of runtime libraries,
|
|
||||||
# Google Test also has to use one.
|
|
||||||
option(
|
|
||||||
gtest_force_shared_crt
|
|
||||||
"Use shared (DLL) run-time lib even when Google Test is built as static lib."
|
|
||||||
OFF)
|
|
||||||
|
|
||||||
option(gtest_build_tests "Build all of gtest's own tests." OFF)
|
|
||||||
|
|
||||||
option(gtest_build_samples "Build gtest's sample programs." OFF)
|
|
||||||
|
|
||||||
option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF)
|
|
||||||
|
|
||||||
option(
|
|
||||||
gtest_hide_internal_symbols
|
|
||||||
"Build gtest with internal symbols hidden in shared libraries."
|
|
||||||
OFF)
|
|
||||||
|
|
||||||
# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build().
|
|
||||||
include(cmake/hermetic_build.cmake OPTIONAL)
|
|
||||||
|
|
||||||
if (COMMAND pre_project_set_up_hermetic_build)
|
|
||||||
pre_project_set_up_hermetic_build()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Project-wide settings
|
|
||||||
|
|
||||||
# Name of the project.
|
|
||||||
#
|
|
||||||
# CMake files in this project can refer to the root source directory
|
|
||||||
# as ${gtest_SOURCE_DIR} and to the root binary directory as
|
|
||||||
# ${gtest_BINARY_DIR}.
|
|
||||||
# Language "C" is required for find_package(Threads).
|
|
||||||
if (CMAKE_VERSION VERSION_LESS 3.0)
|
|
||||||
project(gtest CXX C)
|
|
||||||
else()
|
|
||||||
cmake_policy(SET CMP0048 NEW)
|
|
||||||
project(gtest VERSION ${GOOGLETEST_VERSION} LANGUAGES CXX C)
|
|
||||||
endif()
|
|
||||||
cmake_minimum_required(VERSION 2.6.4)
|
|
||||||
|
|
||||||
if (POLICY CMP0063) # Visibility
|
|
||||||
cmake_policy(SET CMP0063 NEW)
|
|
||||||
endif (POLICY CMP0063)
|
|
||||||
|
|
||||||
if (COMMAND set_up_hermetic_build)
|
|
||||||
set_up_hermetic_build()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# These commands only run if this is the main project
|
|
||||||
if(CMAKE_PROJECT_NAME STREQUAL "gtest" OR CMAKE_PROJECT_NAME STREQUAL "googletest-distribution")
|
|
||||||
|
|
||||||
# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to
|
|
||||||
# make it prominent in the GUI.
|
|
||||||
option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF)
|
|
||||||
|
|
||||||
else()
|
|
||||||
|
|
||||||
mark_as_advanced(
|
|
||||||
gtest_force_shared_crt
|
|
||||||
gtest_build_tests
|
|
||||||
gtest_build_samples
|
|
||||||
gtest_disable_pthreads
|
|
||||||
gtest_hide_internal_symbols)
|
|
||||||
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
if (gtest_hide_internal_symbols)
|
|
||||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
|
||||||
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Define helper functions and macros used by Google Test.
|
|
||||||
include(cmake/internal_utils.cmake)
|
|
||||||
|
|
||||||
config_compiler_and_linker() # Defined in internal_utils.cmake.
|
|
||||||
|
|
||||||
# Create the CMake package file descriptors.
|
|
||||||
if (INSTALL_GTEST)
|
|
||||||
include(CMakePackageConfigHelpers)
|
|
||||||
set(cmake_package_name GTest)
|
|
||||||
set(targets_export_name ${cmake_package_name}Targets CACHE INTERNAL "")
|
|
||||||
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated" CACHE INTERNAL "")
|
|
||||||
set(cmake_files_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${cmake_package_name}")
|
|
||||||
set(version_file "${generated_dir}/${cmake_package_name}ConfigVersion.cmake")
|
|
||||||
write_basic_package_version_file(${version_file} COMPATIBILITY AnyNewerVersion)
|
|
||||||
install(EXPORT ${targets_export_name}
|
|
||||||
NAMESPACE ${cmake_package_name}::
|
|
||||||
DESTINATION ${cmake_files_install_dir})
|
|
||||||
set(config_file "${generated_dir}/${cmake_package_name}Config.cmake")
|
|
||||||
configure_package_config_file("${gtest_SOURCE_DIR}/cmake/Config.cmake.in"
|
|
||||||
"${config_file}" INSTALL_DESTINATION ${cmake_files_install_dir})
|
|
||||||
install(FILES ${version_file} ${config_file}
|
|
||||||
DESTINATION ${cmake_files_install_dir})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Where Google Test's .h files can be found.
|
|
||||||
set(gtest_build_include_dirs
|
|
||||||
"${gtest_SOURCE_DIR}/include"
|
|
||||||
"${gtest_SOURCE_DIR}")
|
|
||||||
include_directories(${gtest_build_include_dirs})
|
|
||||||
|
|
||||||
# Summary of tuple support for Microsoft Visual Studio:
|
|
||||||
# Compiler version(MS) version(cmake) Support
|
|
||||||
# ---------- ----------- -------------- -----------------------------
|
|
||||||
# <= VS 2010 <= 10 <= 1600 Use Google Tests's own tuple.
|
|
||||||
# VS 2012 11 1700 std::tr1::tuple + _VARIADIC_MAX=10
|
|
||||||
# VS 2013 12 1800 std::tr1::tuple
|
|
||||||
# VS 2015 14 1900 std::tuple
|
|
||||||
# VS 2017 15 >= 1910 std::tuple
|
|
||||||
if (MSVC AND MSVC_VERSION EQUAL 1700)
|
|
||||||
add_definitions(/D _VARIADIC_MAX=10)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Defines the gtest & gtest_main libraries. User tests should link
|
|
||||||
# with one of them.
|
|
||||||
|
|
||||||
# Google Test libraries. We build them using more strict warnings than what
|
|
||||||
# are used for other targets, to ensure that gtest can be compiled by a user
|
|
||||||
# aggressive about warnings.
|
|
||||||
cxx_library(gtest "${cxx_strict}" src/gtest-all.cc)
|
|
||||||
cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc)
|
|
||||||
# If the CMake version supports it, attach header directory information
|
|
||||||
# to the targets for when we are part of a parent build (ie being pulled
|
|
||||||
# in via add_subdirectory() rather than being a standalone build).
|
|
||||||
if (DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
|
|
||||||
target_include_directories(gtest SYSTEM INTERFACE
|
|
||||||
"$<BUILD_INTERFACE:${gtest_build_include_dirs}>"
|
|
||||||
"$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
|
|
||||||
target_include_directories(gtest_main SYSTEM INTERFACE
|
|
||||||
"$<BUILD_INTERFACE:${gtest_build_include_dirs}>"
|
|
||||||
"$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
|
|
||||||
endif()
|
|
||||||
target_link_libraries(gtest_main PUBLIC gtest)
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Install rules
|
|
||||||
install_project(gtest gtest_main)
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Samples on how to link user tests with gtest or gtest_main.
|
|
||||||
#
|
|
||||||
# They are not built by default. To build them, set the
|
|
||||||
# gtest_build_samples option to ON. You can do it by running ccmake
|
|
||||||
# or specifying the -Dgtest_build_samples=ON flag when running cmake.
|
|
||||||
|
|
||||||
if (gtest_build_samples)
|
|
||||||
cxx_executable(sample1_unittest samples gtest_main samples/sample1.cc)
|
|
||||||
cxx_executable(sample2_unittest samples gtest_main samples/sample2.cc)
|
|
||||||
cxx_executable(sample3_unittest samples gtest_main)
|
|
||||||
cxx_executable(sample4_unittest samples gtest_main samples/sample4.cc)
|
|
||||||
cxx_executable(sample5_unittest samples gtest_main samples/sample1.cc)
|
|
||||||
cxx_executable(sample6_unittest samples gtest_main)
|
|
||||||
cxx_executable(sample7_unittest samples gtest_main)
|
|
||||||
cxx_executable(sample8_unittest samples gtest_main)
|
|
||||||
cxx_executable(sample9_unittest samples gtest)
|
|
||||||
cxx_executable(sample10_unittest samples gtest)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Google Test's own tests.
|
|
||||||
#
|
|
||||||
# You can skip this section if you aren't interested in testing
|
|
||||||
# Google Test itself.
|
|
||||||
#
|
|
||||||
# The tests are not built by default. To build them, set the
|
|
||||||
# gtest_build_tests option to ON. You can do it by running ccmake
|
|
||||||
# or specifying the -Dgtest_build_tests=ON flag when running cmake.
|
|
||||||
|
|
||||||
if (gtest_build_tests)
|
|
||||||
# This must be set in the root directory for the tests to be run by
|
|
||||||
# 'make test' or ctest.
|
|
||||||
enable_testing()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
# C++ tests built with standard compiler flags.
|
|
||||||
|
|
||||||
cxx_test(googletest-death-test-test gtest_main)
|
|
||||||
cxx_test(gtest_environment_test gtest)
|
|
||||||
cxx_test(googletest-filepath-test gtest_main)
|
|
||||||
cxx_test(googletest-linked-ptr-test gtest_main)
|
|
||||||
cxx_test(googletest-listener-test gtest_main)
|
|
||||||
cxx_test(gtest_main_unittest gtest_main)
|
|
||||||
cxx_test(googletest-message-test gtest_main)
|
|
||||||
cxx_test(gtest_no_test_unittest gtest)
|
|
||||||
cxx_test(googletest-options-test gtest_main)
|
|
||||||
cxx_test(googletest-param-test-test gtest
|
|
||||||
test/googletest-param-test2-test.cc)
|
|
||||||
cxx_test(googletest-port-test gtest_main)
|
|
||||||
cxx_test(gtest_pred_impl_unittest gtest_main)
|
|
||||||
cxx_test(gtest_premature_exit_test gtest
|
|
||||||
test/gtest_premature_exit_test.cc)
|
|
||||||
cxx_test(googletest-printers-test gtest_main)
|
|
||||||
cxx_test(gtest_prod_test gtest_main
|
|
||||||
test/production.cc)
|
|
||||||
cxx_test(gtest_repeat_test gtest)
|
|
||||||
cxx_test(gtest_sole_header_test gtest_main)
|
|
||||||
cxx_test(gtest_stress_test gtest)
|
|
||||||
cxx_test(googletest-test-part-test gtest_main)
|
|
||||||
cxx_test(gtest_throw_on_failure_ex_test gtest)
|
|
||||||
cxx_test(gtest-typed-test_test gtest_main
|
|
||||||
test/gtest-typed-test2_test.cc)
|
|
||||||
cxx_test(gtest_unittest gtest_main)
|
|
||||||
cxx_test(gtest-unittest-api_test gtest)
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
# C++ tests built with non-standard compiler flags.
|
|
||||||
|
|
||||||
# MSVC 7.1 does not support STL with exceptions disabled.
|
|
||||||
if (NOT MSVC OR MSVC_VERSION GREATER 1310)
|
|
||||||
cxx_library(gtest_no_exception "${cxx_no_exception}"
|
|
||||||
src/gtest-all.cc)
|
|
||||||
cxx_library(gtest_main_no_exception "${cxx_no_exception}"
|
|
||||||
src/gtest-all.cc src/gtest_main.cc)
|
|
||||||
endif()
|
|
||||||
cxx_library(gtest_main_no_rtti "${cxx_no_rtti}"
|
|
||||||
src/gtest-all.cc src/gtest_main.cc)
|
|
||||||
|
|
||||||
cxx_test_with_flags(gtest-death-test_ex_nocatch_test
|
|
||||||
"${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=0"
|
|
||||||
gtest test/googletest-death-test_ex_test.cc)
|
|
||||||
cxx_test_with_flags(gtest-death-test_ex_catch_test
|
|
||||||
"${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=1"
|
|
||||||
gtest test/googletest-death-test_ex_test.cc)
|
|
||||||
|
|
||||||
cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}"
|
|
||||||
gtest_main_no_rtti test/gtest_unittest.cc)
|
|
||||||
|
|
||||||
cxx_shared_library(gtest_dll "${cxx_default}"
|
|
||||||
src/gtest-all.cc src/gtest_main.cc)
|
|
||||||
|
|
||||||
cxx_executable_with_flags(gtest_dll_test_ "${cxx_default}"
|
|
||||||
gtest_dll test/gtest_all_test.cc)
|
|
||||||
set_target_properties(gtest_dll_test_
|
|
||||||
PROPERTIES
|
|
||||||
COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
|
|
||||||
|
|
||||||
if (NOT MSVC OR MSVC_VERSION LESS 1600) # 1600 is Visual Studio 2010.
|
|
||||||
# Visual Studio 2010, 2012, and 2013 define symbols in std::tr1 that
|
|
||||||
# conflict with our own definitions. Therefore using our own tuple does not
|
|
||||||
# work on those compilers.
|
|
||||||
cxx_library(gtest_main_use_own_tuple "${cxx_use_own_tuple}"
|
|
||||||
src/gtest-all.cc src/gtest_main.cc)
|
|
||||||
|
|
||||||
cxx_test_with_flags(googletest-tuple-test "${cxx_use_own_tuple}"
|
|
||||||
gtest_main_use_own_tuple test/googletest-tuple-test.cc)
|
|
||||||
|
|
||||||
cxx_test_with_flags(gtest_use_own_tuple_test "${cxx_use_own_tuple}"
|
|
||||||
gtest_main_use_own_tuple
|
|
||||||
test/googletest-param-test-test.cc test/googletest-param-test2-test.cc)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
# Python tests.
|
|
||||||
|
|
||||||
cxx_executable(googletest-break-on-failure-unittest_ test gtest)
|
|
||||||
py_test(googletest-break-on-failure-unittest)
|
|
||||||
|
|
||||||
# Visual Studio .NET 2003 does not support STL with exceptions disabled.
|
|
||||||
if (NOT MSVC OR MSVC_VERSION GREATER 1310) # 1310 is Visual Studio .NET 2003
|
|
||||||
cxx_executable_with_flags(
|
|
||||||
googletest-catch-exceptions-no-ex-test_
|
|
||||||
"${cxx_no_exception}"
|
|
||||||
gtest_main_no_exception
|
|
||||||
test/googletest-catch-exceptions-test_.cc)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
cxx_executable_with_flags(
|
|
||||||
googletest-catch-exceptions-ex-test_
|
|
||||||
"${cxx_exception}"
|
|
||||||
gtest_main
|
|
||||||
test/googletest-catch-exceptions-test_.cc)
|
|
||||||
py_test(googletest-catch-exceptions-test)
|
|
||||||
|
|
||||||
cxx_executable(googletest-color-test_ test gtest)
|
|
||||||
py_test(googletest-color-test)
|
|
||||||
|
|
||||||
cxx_executable(googletest-env-var-test_ test gtest)
|
|
||||||
py_test(googletest-env-var-test)
|
|
||||||
|
|
||||||
cxx_executable(googletest-filter-unittest_ test gtest)
|
|
||||||
py_test(googletest-filter-unittest)
|
|
||||||
|
|
||||||
cxx_executable(gtest_help_test_ test gtest_main)
|
|
||||||
py_test(gtest_help_test)
|
|
||||||
|
|
||||||
cxx_executable(googletest-list-tests-unittest_ test gtest)
|
|
||||||
py_test(googletest-list-tests-unittest)
|
|
||||||
|
|
||||||
cxx_executable(googletest-output-test_ test gtest)
|
|
||||||
py_test(googletest-output-test --no_stacktrace_support)
|
|
||||||
|
|
||||||
cxx_executable(googletest-shuffle-test_ test gtest)
|
|
||||||
py_test(googletest-shuffle-test)
|
|
||||||
|
|
||||||
# MSVC 7.1 does not support STL with exceptions disabled.
|
|
||||||
if (NOT MSVC OR MSVC_VERSION GREATER 1310)
|
|
||||||
cxx_executable(googletest-throw-on-failure-test_ test gtest_no_exception)
|
|
||||||
set_target_properties(googletest-throw-on-failure-test_
|
|
||||||
PROPERTIES
|
|
||||||
COMPILE_FLAGS "${cxx_no_exception}")
|
|
||||||
py_test(googletest-throw-on-failure-test)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
cxx_executable(googletest-uninitialized-test_ test gtest)
|
|
||||||
py_test(googletest-uninitialized-test)
|
|
||||||
|
|
||||||
cxx_executable(gtest_xml_outfile1_test_ test gtest_main)
|
|
||||||
cxx_executable(gtest_xml_outfile2_test_ test gtest_main)
|
|
||||||
py_test(gtest_xml_outfiles_test)
|
|
||||||
py_test(googletest-json-outfiles-test)
|
|
||||||
|
|
||||||
cxx_executable(gtest_xml_output_unittest_ test gtest)
|
|
||||||
py_test(gtest_xml_output_unittest --no_stacktrace_support)
|
|
||||||
py_test(googletest-json-output-unittest --no_stacktrace_support)
|
|
||||||
endif()
|
|
@ -1,9 +0,0 @@
|
|||||||
@PACKAGE_INIT@
|
|
||||||
include(CMakeFindDependencyMacro)
|
|
||||||
if (@GTEST_HAS_PTHREAD@)
|
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG @THREADS_PREFER_PTHREAD_FLAG@)
|
|
||||||
find_dependency(Threads)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake")
|
|
||||||
check_required_components("@project_name@")
|
|
@ -1,9 +0,0 @@
|
|||||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
|
||||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
|
||||||
|
|
||||||
Name: gtest
|
|
||||||
Description: GoogleTest (without main() function)
|
|
||||||
Version: @PROJECT_VERSION@
|
|
||||||
URL: https://github.com/google/googletest
|
|
||||||
Libs: -L${libdir} -lgtest @CMAKE_THREAD_LIBS_INIT@
|
|
||||||
Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@
|
|
@ -1,10 +0,0 @@
|
|||||||
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
|
||||||
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
|
||||||
|
|
||||||
Name: gtest_main
|
|
||||||
Description: GoogleTest (with main() function)
|
|
||||||
Version: @PROJECT_VERSION@
|
|
||||||
URL: https://github.com/google/googletest
|
|
||||||
Requires: gtest
|
|
||||||
Libs: -L${libdir} -lgtest_main @CMAKE_THREAD_LIBS_INIT@
|
|
||||||
Cflags: -I${includedir} @GTEST_HAS_PTHREAD_MACRO@ @CMAKE_THREAD_LIBS_INIT@
|
|
@ -1,318 +0,0 @@
|
|||||||
# Defines functions and macros useful for building Google Test and
|
|
||||||
# Google Mock.
|
|
||||||
#
|
|
||||||
# Note:
|
|
||||||
#
|
|
||||||
# - This file will be run twice when building Google Mock (once via
|
|
||||||
# Google Test's CMakeLists.txt, and once via Google Mock's).
|
|
||||||
# Therefore it shouldn't have any side effects other than defining
|
|
||||||
# the functions and macros.
|
|
||||||
#
|
|
||||||
# - The functions/macros defined in this file may depend on Google
|
|
||||||
# Test and Google Mock's option() definitions, and thus must be
|
|
||||||
# called *after* the options have been defined.
|
|
||||||
|
|
||||||
# Tweaks CMake's default compiler/linker settings to suit Google Test's needs.
|
|
||||||
#
|
|
||||||
# This must be a macro(), as inside a function string() can only
|
|
||||||
# update variables in the function scope.
|
|
||||||
macro(fix_default_compiler_settings_)
|
|
||||||
if (MSVC)
|
|
||||||
# For MSVC, CMake sets certain flags to defaults we want to override.
|
|
||||||
# This replacement code is taken from sample in the CMake Wiki at
|
|
||||||
# https://gitlab.kitware.com/cmake/community/wikis/FAQ#dynamic-replace.
|
|
||||||
foreach (flag_var
|
|
||||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
|
||||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
|
||||||
if (NOT BUILD_SHARED_LIBS AND NOT gtest_force_shared_crt)
|
|
||||||
# When Google Test is built as a shared library, it should also use
|
|
||||||
# shared runtime libraries. Otherwise, it may end up with multiple
|
|
||||||
# copies of runtime library data in different modules, resulting in
|
|
||||||
# hard-to-find crashes. When it is built as a static library, it is
|
|
||||||
# preferable to use CRT as static libraries, as we don't have to rely
|
|
||||||
# on CRT DLLs being available. CMake always defaults to using shared
|
|
||||||
# CRT libraries, so we override that default here.
|
|
||||||
string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# We prefer more strict warning checking for building Google Test.
|
|
||||||
# Replaces /W3 with /W4 in defaults.
|
|
||||||
string(REPLACE "/W3" "/W4" ${flag_var} "${${flag_var}}")
|
|
||||||
|
|
||||||
# Prevent D9025 warning for targets that have exception handling
|
|
||||||
# turned off (/EHs-c- flag). Where required, exceptions are explicitly
|
|
||||||
# re-enabled using the cxx_exception_flags variable.
|
|
||||||
string(REPLACE "/EHsc" "" ${flag_var} "${${flag_var}}")
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# Defines the compiler/linker flags used to build Google Test and
|
|
||||||
# Google Mock. You can tweak these definitions to suit your need. A
|
|
||||||
# variable's value is empty before it's explicitly assigned to.
|
|
||||||
macro(config_compiler_and_linker)
|
|
||||||
# Note: pthreads on MinGW is not supported, even if available
|
|
||||||
# instead, we use windows threading primitives
|
|
||||||
unset(GTEST_HAS_PTHREAD)
|
|
||||||
if (NOT gtest_disable_pthreads AND NOT MINGW)
|
|
||||||
# Defines CMAKE_USE_PTHREADS_INIT and CMAKE_THREAD_LIBS_INIT.
|
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
||||||
find_package(Threads)
|
|
||||||
if (CMAKE_USE_PTHREADS_INIT)
|
|
||||||
set(GTEST_HAS_PTHREAD ON)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
fix_default_compiler_settings_()
|
|
||||||
if (MSVC)
|
|
||||||
# Newlines inside flags variables break CMake's NMake generator.
|
|
||||||
# TODO(vladl@google.com): Add -RTCs and -RTCu to debug builds.
|
|
||||||
set(cxx_base_flags "-GS -W4 -WX -wd4251 -wd4275 -nologo -J -Zi")
|
|
||||||
if (MSVC_VERSION LESS 1400) # 1400 is Visual Studio 2005
|
|
||||||
# Suppress spurious warnings MSVC 7.1 sometimes issues.
|
|
||||||
# Forcing value to bool.
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -wd4800")
|
|
||||||
# Copy constructor and assignment operator could not be generated.
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -wd4511 -wd4512")
|
|
||||||
# Compatibility warnings not applicable to Google Test.
|
|
||||||
# Resolved overload was found by argument-dependent lookup.
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -wd4675")
|
|
||||||
endif()
|
|
||||||
if (MSVC_VERSION LESS 1500) # 1500 is Visual Studio 2008
|
|
||||||
# Conditional expression is constant.
|
|
||||||
# When compiling with /W4, we get several instances of C4127
|
|
||||||
# (Conditional expression is constant). In our code, we disable that
|
|
||||||
# warning on a case-by-case basis. However, on Visual Studio 2005,
|
|
||||||
# the warning fires on std::list. Therefore on that compiler and earlier,
|
|
||||||
# we disable the warning project-wide.
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -wd4127")
|
|
||||||
endif()
|
|
||||||
if (NOT (MSVC_VERSION LESS 1700)) # 1700 is Visual Studio 2012.
|
|
||||||
# Suppress "unreachable code" warning on VS 2012 and later.
|
|
||||||
# http://stackoverflow.com/questions/3232669 explains the issue.
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -wd4702")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32")
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN")
|
|
||||||
set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1")
|
|
||||||
set(cxx_no_exception_flags "-EHs-c- -D_HAS_EXCEPTIONS=0")
|
|
||||||
set(cxx_no_rtti_flags "-GR-")
|
|
||||||
elseif (CMAKE_COMPILER_IS_GNUCXX)
|
|
||||||
set(cxx_base_flags "-Wall -Wshadow -Werror")
|
|
||||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0.0)
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} -Wno-error=dangling-else")
|
|
||||||
endif()
|
|
||||||
set(cxx_exception_flags "-fexceptions")
|
|
||||||
set(cxx_no_exception_flags "-fno-exceptions")
|
|
||||||
# Until version 4.3.2, GCC doesn't define a macro to indicate
|
|
||||||
# whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI
|
|
||||||
# explicitly.
|
|
||||||
set(cxx_no_rtti_flags "-fno-rtti -DGTEST_HAS_RTTI=0")
|
|
||||||
set(cxx_strict_flags
|
|
||||||
"-Wextra -Wno-unused-parameter -Wno-missing-field-initializers")
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
|
|
||||||
set(cxx_exception_flags "-features=except")
|
|
||||||
# Sun Pro doesn't provide macros to indicate whether exceptions and
|
|
||||||
# RTTI are enabled, so we define GTEST_HAS_* explicitly.
|
|
||||||
set(cxx_no_exception_flags "-features=no%except -DGTEST_HAS_EXCEPTIONS=0")
|
|
||||||
set(cxx_no_rtti_flags "-features=no%rtti -DGTEST_HAS_RTTI=0")
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "VisualAge" OR
|
|
||||||
CMAKE_CXX_COMPILER_ID STREQUAL "XL")
|
|
||||||
# CMake 2.8 changes Visual Age's compiler ID to "XL".
|
|
||||||
set(cxx_exception_flags "-qeh")
|
|
||||||
set(cxx_no_exception_flags "-qnoeh")
|
|
||||||
# Until version 9.0, Visual Age doesn't define a macro to indicate
|
|
||||||
# whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI
|
|
||||||
# explicitly.
|
|
||||||
set(cxx_no_rtti_flags "-qnortti -DGTEST_HAS_RTTI=0")
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "HP")
|
|
||||||
set(cxx_base_flags "-AA -mt")
|
|
||||||
set(cxx_exception_flags "-DGTEST_HAS_EXCEPTIONS=1")
|
|
||||||
set(cxx_no_exception_flags "+noeh -DGTEST_HAS_EXCEPTIONS=0")
|
|
||||||
# RTTI can not be disabled in HP aCC compiler.
|
|
||||||
set(cxx_no_rtti_flags "")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# The pthreads library is available and allowed?
|
|
||||||
if (DEFINED GTEST_HAS_PTHREAD)
|
|
||||||
set(GTEST_HAS_PTHREAD_MACRO "-DGTEST_HAS_PTHREAD=1")
|
|
||||||
else()
|
|
||||||
set(GTEST_HAS_PTHREAD_MACRO "-DGTEST_HAS_PTHREAD=0")
|
|
||||||
endif()
|
|
||||||
set(cxx_base_flags "${cxx_base_flags} ${GTEST_HAS_PTHREAD_MACRO}")
|
|
||||||
|
|
||||||
# For building gtest's own tests and samples.
|
|
||||||
set(cxx_exception "${cxx_base_flags} ${cxx_exception_flags}")
|
|
||||||
set(cxx_no_exception
|
|
||||||
"${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_no_exception_flags}")
|
|
||||||
set(cxx_default "${cxx_exception}")
|
|
||||||
set(cxx_no_rtti "${cxx_default} ${cxx_no_rtti_flags}")
|
|
||||||
set(cxx_use_own_tuple "${cxx_default} -DGTEST_USE_OWN_TR1_TUPLE=1")
|
|
||||||
|
|
||||||
# For building the gtest libraries.
|
|
||||||
set(cxx_strict "${cxx_default} ${cxx_strict_flags}")
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
# Defines the gtest & gtest_main libraries. User tests should link
|
|
||||||
# with one of them.
|
|
||||||
function(cxx_library_with_type name type cxx_flags)
|
|
||||||
# type can be either STATIC or SHARED to denote a static or shared library.
|
|
||||||
# ARGN refers to additional arguments after 'cxx_flags'.
|
|
||||||
add_library(${name} ${type} ${ARGN})
|
|
||||||
set_target_properties(${name}
|
|
||||||
PROPERTIES
|
|
||||||
COMPILE_FLAGS "${cxx_flags}")
|
|
||||||
# Generate debug library name with a postfix.
|
|
||||||
set_target_properties(${name}
|
|
||||||
PROPERTIES
|
|
||||||
DEBUG_POSTFIX "d")
|
|
||||||
if (BUILD_SHARED_LIBS OR type STREQUAL "SHARED")
|
|
||||||
set_target_properties(${name}
|
|
||||||
PROPERTIES
|
|
||||||
COMPILE_DEFINITIONS "GTEST_CREATE_SHARED_LIBRARY=1")
|
|
||||||
if (NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
|
|
||||||
target_compile_definitions(${name} INTERFACE
|
|
||||||
$<INSTALL_INTERFACE:GTEST_LINKED_AS_SHARED_LIBRARY=1>)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
if (DEFINED GTEST_HAS_PTHREAD)
|
|
||||||
if ("${CMAKE_VERSION}" VERSION_LESS "3.1.0")
|
|
||||||
set(threads_spec ${CMAKE_THREAD_LIBS_INIT})
|
|
||||||
else()
|
|
||||||
set(threads_spec Threads::Threads)
|
|
||||||
endif()
|
|
||||||
target_link_libraries(${name} PUBLIC ${threads_spec})
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
########################################################################
|
|
||||||
#
|
|
||||||
# Helper functions for creating build targets.
|
|
||||||
|
|
||||||
function(cxx_shared_library name cxx_flags)
|
|
||||||
cxx_library_with_type(${name} SHARED "${cxx_flags}" ${ARGN})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
function(cxx_library name cxx_flags)
|
|
||||||
cxx_library_with_type(${name} "" "${cxx_flags}" ${ARGN})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# cxx_executable_with_flags(name cxx_flags libs srcs...)
|
|
||||||
#
|
|
||||||
# creates a named C++ executable that depends on the given libraries and
|
|
||||||
# is built from the given source files with the given compiler flags.
|
|
||||||
function(cxx_executable_with_flags name cxx_flags libs)
|
|
||||||
add_executable(${name} ${ARGN})
|
|
||||||
if (MSVC AND (NOT (MSVC_VERSION LESS 1700))) # 1700 is Visual Studio 2012.
|
|
||||||
# BigObj required for tests.
|
|
||||||
set(cxx_flags "${cxx_flags} -bigobj")
|
|
||||||
endif()
|
|
||||||
if (cxx_flags)
|
|
||||||
set_target_properties(${name}
|
|
||||||
PROPERTIES
|
|
||||||
COMPILE_FLAGS "${cxx_flags}")
|
|
||||||
endif()
|
|
||||||
if (BUILD_SHARED_LIBS)
|
|
||||||
set_target_properties(${name}
|
|
||||||
PROPERTIES
|
|
||||||
COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
|
|
||||||
endif()
|
|
||||||
# To support mixing linking in static and dynamic libraries, link each
|
|
||||||
# library in with an extra call to target_link_libraries.
|
|
||||||
foreach (lib "${libs}")
|
|
||||||
target_link_libraries(${name} ${lib})
|
|
||||||
endforeach()
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# cxx_executable(name dir lib srcs...)
|
|
||||||
#
|
|
||||||
# creates a named target that depends on the given libs and is built
|
|
||||||
# from the given source files. dir/name.cc is implicitly included in
|
|
||||||
# the source file list.
|
|
||||||
function(cxx_executable name dir libs)
|
|
||||||
cxx_executable_with_flags(
|
|
||||||
${name} "${cxx_default}" "${libs}" "${dir}/${name}.cc" ${ARGN})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE.
|
|
||||||
find_package(PythonInterp)
|
|
||||||
|
|
||||||
# cxx_test_with_flags(name cxx_flags libs srcs...)
|
|
||||||
#
|
|
||||||
# creates a named C++ test that depends on the given libs and is built
|
|
||||||
# from the given source files with the given compiler flags.
|
|
||||||
function(cxx_test_with_flags name cxx_flags libs)
|
|
||||||
cxx_executable_with_flags(${name} "${cxx_flags}" "${libs}" ${ARGN})
|
|
||||||
add_test(NAME ${name} COMMAND ${name})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# cxx_test(name libs srcs...)
|
|
||||||
#
|
|
||||||
# creates a named test target that depends on the given libs and is
|
|
||||||
# built from the given source files. Unlike cxx_test_with_flags,
|
|
||||||
# test/name.cc is already implicitly included in the source file list.
|
|
||||||
function(cxx_test name libs)
|
|
||||||
cxx_test_with_flags("${name}" "${cxx_default}" "${libs}"
|
|
||||||
"test/${name}.cc" ${ARGN})
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# py_test(name)
|
|
||||||
#
|
|
||||||
# creates a Python test with the given name whose main module is in
|
|
||||||
# test/name.py. It does nothing if Python is not installed.
|
|
||||||
function(py_test name)
|
|
||||||
if (PYTHONINTERP_FOUND)
|
|
||||||
if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
|
|
||||||
if (CMAKE_CONFIGURATION_TYPES)
|
|
||||||
# Multi-configuration build generators as for Visual Studio save
|
|
||||||
# output in a subdirectory of CMAKE_CURRENT_BINARY_DIR (Debug,
|
|
||||||
# Release etc.), so we have to provide it here.
|
|
||||||
add_test(
|
|
||||||
NAME ${name}
|
|
||||||
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
|
|
||||||
--build_dir=${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG> ${ARGN})
|
|
||||||
else (CMAKE_CONFIGURATION_TYPES)
|
|
||||||
# Single-configuration build generators like Makefile generators
|
|
||||||
# don't have subdirs below CMAKE_CURRENT_BINARY_DIR.
|
|
||||||
add_test(
|
|
||||||
NAME ${name}
|
|
||||||
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
|
|
||||||
--build_dir=${CMAKE_CURRENT_BINARY_DIR} ${ARGN})
|
|
||||||
endif (CMAKE_CONFIGURATION_TYPES)
|
|
||||||
else (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
|
|
||||||
# ${CMAKE_CURRENT_BINARY_DIR} is known at configuration time, so we can
|
|
||||||
# directly bind it from cmake. ${CTEST_CONFIGURATION_TYPE} is known
|
|
||||||
# only at ctest runtime (by calling ctest -c <Configuration>), so
|
|
||||||
# we have to escape $ to delay variable substitution here.
|
|
||||||
add_test(
|
|
||||||
${name}
|
|
||||||
${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py
|
|
||||||
--build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE} ${ARGN})
|
|
||||||
endif (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} GREATER 3.1)
|
|
||||||
endif(PYTHONINTERP_FOUND)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
# install_project(targets...)
|
|
||||||
#
|
|
||||||
# Installs the specified targets and configures the associated pkgconfig files.
|
|
||||||
function(install_project)
|
|
||||||
if(INSTALL_GTEST)
|
|
||||||
install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
|
|
||||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
|
|
||||||
# Install the project targets.
|
|
||||||
install(TARGETS ${ARGN}
|
|
||||||
EXPORT ${targets_export_name}
|
|
||||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
|
|
||||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
|
|
||||||
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
|
||||||
# Configure and install pkgconfig files.
|
|
||||||
foreach(t ${ARGN})
|
|
||||||
set(configured_pc "${generated_dir}/${t}.pc")
|
|
||||||
configure_file("${PROJECT_SOURCE_DIR}/cmake/${t}.pc.in"
|
|
||||||
"${configured_pc}" @ONLY)
|
|
||||||
install(FILES "${configured_pc}"
|
|
||||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
endfunction()
|
|
@ -2117,7 +2117,7 @@ class UnitTestRecordPropertyTestEnvironment : public Environment {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// This will test property recording outside of any test or test case.
|
// This will test property recording outside of any test or test case.
|
||||||
static Environment* record_property_env GTEST_ATTRIBUTE_UNUSED_ =
|
static Environment* record_property_env =
|
||||||
AddGlobalTestEnvironment(new UnitTestRecordPropertyTestEnvironment);
|
AddGlobalTestEnvironment(new UnitTestRecordPropertyTestEnvironment);
|
||||||
|
|
||||||
// This group of tests is for predicate assertions (ASSERT_PRED*, etc)
|
// This group of tests is for predicate assertions (ASSERT_PRED*, etc)
|
||||||
|
Loading…
Reference in New Issue
Block a user