Merge topic 'FindGTest-imported-targets'
f0b5ce7f Help: Add notes for topic 'FindGTest-imported-targets' 99afe235 Tests: Add tests for FindGTest 611735e7 FindGTest: Add imported targets and update documentation
This commit is contained in:
commit
c952f2b424
4
Help/release/dev/FindGTest-imported-targets.rst
Normal file
4
Help/release/dev/FindGTest-imported-targets.rst
Normal file
@ -0,0 +1,4 @@
|
||||
FindGTest-imported-targets
|
||||
--------------------------
|
||||
|
||||
* The :module:`FindGTest` module now provides imported targets.
|
@ -4,88 +4,89 @@
|
||||
#
|
||||
# Locate the Google C++ Testing Framework.
|
||||
#
|
||||
# Defines the following variables:
|
||||
# Imported targets
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# ::
|
||||
# This module defines the following :prop_tgt:`IMPORTED` targets:
|
||||
#
|
||||
# GTEST_FOUND - Found the Google Testing framework
|
||||
# GTEST_INCLUDE_DIRS - Include directories
|
||||
# ``GTest::GTest``
|
||||
# The Google Test ``gtest`` library, if found; adds Thread::Thread
|
||||
# automatically
|
||||
# ``GTest::Main``
|
||||
# The Google Test ``gtest_main`` library, if found
|
||||
#
|
||||
#
|
||||
# Result variables
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# Also defines the library variables below as normal variables. These
|
||||
# This module will set the following variables in your project:
|
||||
#
|
||||
# ``GTEST_FOUND``
|
||||
# Found the Google Testing framework
|
||||
# ``GTEST_INCLUDE_DIRS``
|
||||
# the directory containing the Google Test headers
|
||||
#
|
||||
# The library variables below are set as normal variables. These
|
||||
# contain debug/optimized keywords when a debugging library is found.
|
||||
#
|
||||
# ::
|
||||
# ``GTEST_LIBRARIES``
|
||||
# The Google Test ``gtest`` library; note it also requires linking
|
||||
# with an appropriate thread library
|
||||
# ``GTEST_MAIN_LIBRARIES``
|
||||
# The Google Test ``gtest_main`` library
|
||||
# ``GTEST_BOTH_LIBRARIES``
|
||||
# Both ``gtest`` and ``gtest_main``
|
||||
#
|
||||
# GTEST_BOTH_LIBRARIES - Both libgtest & libgtest-main
|
||||
# GTEST_LIBRARIES - libgtest
|
||||
# GTEST_MAIN_LIBRARIES - libgtest-main
|
||||
# Cache variables
|
||||
# ^^^^^^^^^^^^^^^
|
||||
#
|
||||
# The following cache variables may also be set:
|
||||
#
|
||||
# ``GTEST_ROOT``
|
||||
# The root directory of the Google Test installation (may also be
|
||||
# set as an environment variable)
|
||||
# ``GTEST_MSVC_SEARCH``
|
||||
# If compiling with MSVC, this variable can be set to ``MD`` or
|
||||
# ``MT`` (the default) to enable searching a GTest build tree
|
||||
#
|
||||
#
|
||||
#
|
||||
# Accepts the following variables as input:
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# GTEST_ROOT - (as a CMake or environment variable)
|
||||
# The root directory of the gtest install prefix
|
||||
#
|
||||
#
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# GTEST_MSVC_SEARCH - If compiling with MSVC, this variable can be set to
|
||||
# "MD" or "MT" to enable searching a GTest build tree
|
||||
# (defaults: "MD")
|
||||
#
|
||||
#
|
||||
#
|
||||
# Example Usage:
|
||||
# Example usage
|
||||
# ^^^^^^^^^^^^^
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# enable_testing()
|
||||
# find_package(GTest REQUIRED)
|
||||
# include_directories(${GTEST_INCLUDE_DIRS})
|
||||
#
|
||||
#
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# add_executable(foo foo.cc)
|
||||
# target_link_libraries(foo ${GTEST_BOTH_LIBRARIES})
|
||||
#
|
||||
#
|
||||
#
|
||||
# ::
|
||||
# target_link_libraries(foo GTest::GTest GTest::Main)
|
||||
#
|
||||
# add_test(AllTestsInFoo foo)
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
# Deeper integration with CTest
|
||||
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# If you would like each Google test to show up in CTest as a test you
|
||||
# may use the following macro. NOTE: It will slow down your tests by
|
||||
# running an executable for each test and test fixture. You will also
|
||||
# have to rerun CMake after adding or removing tests or test fixtures.
|
||||
# may use the following macro::
|
||||
#
|
||||
# GTEST_ADD_TESTS(executable extra_args ARGN)
|
||||
# GTEST_ADD_TESTS(executable extra_args files...)
|
||||
#
|
||||
# ::
|
||||
# ``executable``
|
||||
# the path to the test executable
|
||||
# ``extra_args``
|
||||
# a list of extra arguments to be passed to executable enclosed in
|
||||
# quotes (or ``""`` for none)
|
||||
# ``files...``
|
||||
# a list of source files to search for tests and test fixtures. Or
|
||||
# ``AUTO`` to find them from executable target
|
||||
#
|
||||
# executable = The path to the test executable
|
||||
# extra_args = Pass a list of extra arguments to be passed to
|
||||
# executable enclosed in quotes (or "" for none)
|
||||
# ARGN = A list of source files to search for tests & test
|
||||
# fixtures. Or AUTO to find them from executable target.
|
||||
# However, note that this macro will slow down your tests by running
|
||||
# an executable for each test and test fixture. You will also have to
|
||||
# re-run CMake after adding or removing tests or test fixtures.
|
||||
#
|
||||
# Example usage::
|
||||
#
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# Example:
|
||||
# set(FooTestArgs --foo 1 --bar 2)
|
||||
# add_executable(FooTest FooUnitTest.cc)
|
||||
# GTEST_ADD_TESTS(FooTest "${FooTestArgs}" AUTO)
|
||||
@ -208,5 +209,60 @@ if(GTEST_FOUND)
|
||||
_gtest_append_debugs(GTEST_LIBRARIES GTEST_LIBRARY)
|
||||
_gtest_append_debugs(GTEST_MAIN_LIBRARIES GTEST_MAIN_LIBRARY)
|
||||
set(GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES})
|
||||
endif()
|
||||
|
||||
include(CMakeFindDependencyMacro)
|
||||
find_dependency(Threads)
|
||||
|
||||
if(NOT TARGET GTest::GTest)
|
||||
add_library(GTest::GTest UNKNOWN IMPORTED)
|
||||
set_target_properties(GTest::GTest PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "Threads::Threads")
|
||||
if(GTEST_INCLUDE_DIRS)
|
||||
set_target_properties(GTest::GTest PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}")
|
||||
endif()
|
||||
if(EXISTS "${GTEST_LIBRARY}")
|
||||
set_target_properties(GTest::GTest PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GTEST_LIBRARY}")
|
||||
endif()
|
||||
if(EXISTS "${GTEST_LIBRARY_DEBUG}")
|
||||
set_property(TARGET GTest::GTest APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(GTest::GTest PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
|
||||
IMPORTED_LOCATION_DEBUG "${GTEST_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
if(EXISTS "${GTEST_LIBRARY_RELEASE}")
|
||||
set_property(TARGET GTest::GTest APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(GTest::GTest PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
|
||||
IMPORTED_LOCATION_RELEASE "${GTEST_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
endif()
|
||||
if(NOT TARGET GTest::Main)
|
||||
add_library(GTest::Main UNKNOWN IMPORTED)
|
||||
set_target_properties(GTest::Main PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES "GTest::GTest")
|
||||
if(EXISTS "${GTEST_MAIN_LIBRARY}")
|
||||
set_target_properties(GTest::Main PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GTEST_MAIN_LIBRARY}")
|
||||
endif()
|
||||
if(EXISTS "${GTEST_MAIN_LIBRARY_DEBUG}")
|
||||
set_property(TARGET GTest::Main APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(GTest::Main PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
|
||||
IMPORTED_LOCATION_DEBUG "${GTEST_MAIN_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
if(EXISTS "${GTEST_MAIN_LIBRARY_RELEASE}")
|
||||
set_property(TARGET GTest::Main APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(GTest::Main PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
|
||||
IMPORTED_LOCATION_RELEASE "${GTEST_MAIN_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
@ -1362,6 +1362,11 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
|
||||
if(CMake_TEST_FindGSL)
|
||||
add_subdirectory(FindGSL)
|
||||
endif()
|
||||
|
||||
if(CMake_TEST_FindGTest)
|
||||
add_subdirectory(FindGTest)
|
||||
endif()
|
||||
|
||||
if(CMake_TEST_FindJsonCpp)
|
||||
add_subdirectory(FindJsonCpp)
|
||||
endif()
|
||||
|
10
Tests/FindGTest/CMakeLists.txt
Normal file
10
Tests/FindGTest/CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
||||
add_test(NAME FindGTest.Test COMMAND
|
||||
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
|
||||
--build-and-test
|
||||
"${CMake_SOURCE_DIR}/Tests/FindGTest/Test"
|
||||
"${CMake_BINARY_DIR}/Tests/FindGTest/Test"
|
||||
${build_generator_args}
|
||||
--build-project TestFindGTest
|
||||
--build-options ${build_options}
|
||||
--test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
|
||||
)
|
17
Tests/FindGTest/Test/CMakeLists.txt
Normal file
17
Tests/FindGTest/Test/CMakeLists.txt
Normal file
@ -0,0 +1,17 @@
|
||||
cmake_minimum_required(VERSION 3.1)
|
||||
project(TestFindGTest CXX)
|
||||
include(CTest)
|
||||
|
||||
# CMake does not actually provide FindGTest publicly.
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../Source/Modules)
|
||||
|
||||
find_package(GTest REQUIRED)
|
||||
|
||||
add_executable(test_gtest_tgt main.cxx)
|
||||
target_link_libraries(test_gtest_tgt GTest::Main)
|
||||
add_test(NAME test_gtest_tgt COMMAND test_gtest_tgt)
|
||||
|
||||
add_executable(test_gtest_var main.cxx)
|
||||
target_include_directories(test_gtest_var PRIVATE ${GTEST_INCLUDE_DIRS})
|
||||
target_link_libraries(test_gtest_var PRIVATE ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||
add_test(NAME test_gtest_var COMMAND test_gtest_var)
|
6
Tests/FindGTest/Test/main.cxx
Normal file
6
Tests/FindGTest/Test/main.cxx
Normal file
@ -0,0 +1,6 @@
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(FindCMake, LinksAndRuns)
|
||||
{
|
||||
ASSERT_TRUE(true);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user