Base the GoogleTest DLL import on its library type

GTEST_LINKED_AS_SHARED_LIBRARY was defined whenever Ceres was built as a
shared library. Building against a static GoogleTest then made the tests
import GoogleTest symbols from a DLL that does not exist.

Define it only if the bundled GoogleTest is a shared library, since
imported GoogleTest targets already propagate it themselves.

Change-Id: I4b4879d4283c20646e6b38a7b06760639e3c4637
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index d7e1ff5..61092b7 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -361,9 +361,13 @@
   target_compile_definitions(test_util PUBLIC CERES_HAS_GTEST)
   target_compile_definitions(test_util PRIVATE CERES_TEST_SRCDIR_SUFFIX="../../data")
 
-  if (BUILD_SHARED_LIBS)
+  # GoogleTest built as part of Ceres provides the definition only to consumers
+  # of its installed package. Imported targets already provide it.
+  get_target_property(_Ceres_GTEST_TYPE GTest::gtest TYPE)
+  if (_Ceres_GTEST_TYPE STREQUAL SHARED_LIBRARY)
     target_compile_definitions(test_util PUBLIC GTEST_LINKED_AS_SHARED_LIBRARY=1)
-  endif (BUILD_SHARED_LIBS)
+  endif (_Ceres_GTEST_TYPE STREQUAL SHARED_LIBRARY)
+  unset(_Ceres_GTEST_TYPE)
 
   macro (CERES_TEST NAME)
     add_executable(${NAME}_test ${NAME}_test.cc)