@PACKAGE_INIT@

set(googletest_BUILD_SHARED_LIBS @BUILD_SHARED_LIBS@)

set(googletest_NAMESPACE_TARGETS)
set(googletest_ALL_INCLUDE_DIRS)

foreach(target @googletest_install_targets@)
  include(${CMAKE_CURRENT_LIST_DIR}/${target}ConfigInternal.cmake)

  add_library(googletest::${target} INTERFACE IMPORTED)
  set_target_properties(googletest::${target}
    PROPERTIES
      INTERFACE_LINK_LIBRARIES googletest_${target}
      IMPORTED_GLOBAL ON)
  if(googletest_BUILD_SHARED_LIBS)
    set_target_properties(googletest::${target}
      PROPERTIES
        INTERFACE_COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1")
  endif()
  add_library(${target} ALIAS googletest::${target})

  get_target_property(${target}_INCLUDE_DIRS googletest_${target} INTERFACE_INCLUDE_DIRECTORIES)

  list(APPEND googletest_ALL_INCLUDE_DIRS ${${target}_INCLUDE_DIRS})
  list(APPEND googletest_NAMESPACE_TARGETS googletest::${target})
endforeach()

list(REMOVE_DUPLICATES googletest_ALL_INCLUDE_DIRS)
set(GOOGLETEST_INCLUDE_DIRS ${googletest_ALL_INCLUDE_DIRS})

list(REMOVE_DUPLICATES googletest_NAMESPACE_TARGETS)
set(GOOGLETEST_LIBRARIES ${googletest_NAMESPACE_TARGETS})

set(GOOGLETEST_VERSION "@GOOGLETEST_VERSION@")
