diff --git a/CMakeLists.txt b/CMakeLists.txt
index 69432f7..97a93e4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -92,6 +92,21 @@
 
 project(Ceres C CXX)
 
+# NOTE: The following CMake variables must be applied consistently to all
+# targets in project to avoid visibility warnings by placing the variables at
+# the project top.
+
+# Always build position-independent code (PIC), even when building Ceres as a
+# static library so that shared libraries can link against it, not just
+# executables (PIC does not apply on Windows). Global variable can be overridden
+# by the user whereas target properties can be not.
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+# Set the default symbol visibility to hidden to unify the behavior among
+# the various compilers and to get smaller binaries
+set(CMAKE_C_VISIBILITY_PRESET hidden)
+set(CMAKE_CXX_VISIBILITY_PRESET hidden)
+set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
+
 # NOTE: The 'generic' CMake variables CMAKE_[SOURCE/BINARY]_DIR should not be
 #       used.  Always use the project-specific variants (generated by CMake):
 #       <PROJECT_NAME_MATCHING_CASE>_[SOURCE/BINARY]_DIR, e.g.
diff --git a/cmake/AppendTargetProperty.cmake b/cmake/AppendTargetProperty.cmake
deleted file mode 100644
index e0bc3a4..0000000
--- a/cmake/AppendTargetProperty.cmake
+++ /dev/null
@@ -1,61 +0,0 @@
-# Ceres Solver - A fast non-linear least squares minimizer
-# Copyright 2015 Google Inc. All rights reserved.
-# http://ceres-solver.org/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-#   this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above copyright notice,
-#   this list of conditions and the following disclaimer in the documentation
-#   and/or other materials provided with the distribution.
-# * Neither the name of Google Inc. nor the names of its contributors may be
-#   used to endorse or promote products derived from this software without
-#   specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-#
-# Author: alexs.mac@gmail.com (Alex Stewart)
-
-# Append item(s) to a property on a declared CMake target:
-#
-#    append_target_property(target property item_to_append1
-#                                           [... item_to_appendN])
-#
-# The set_target_properties() CMake function will overwrite the contents of the
-# specified target property.  This function instead appends to it, so can
-# be called multiple times with the same target & property to iteratively
-# populate it.
-function(append_target_property TARGET PROPERTY)
-  if (NOT TARGET ${TARGET})
-    message(FATAL_ERROR "Invalid target: ${TARGET} cannot append: ${ARGN} "
-      "to property: ${PROPERTY}")
-  endif()
-  if (NOT PROPERTY)
-    message(FATAL_ERROR "Invalid property to update for target: ${TARGET}")
-  endif()
-  # Get the initial state of the specified property for the target s/t
-  # we can append to it (not overwrite it).
-  get_target_property(INITIAL_PROPERTY_STATE ${TARGET} ${PROPERTY})
-  if (NOT INITIAL_PROPERTY_STATE)
-    # Ensure that if the state is unset, we do not insert the XXX-NOTFOUND
-    # returned by CMake into the property.
-    set(INITIAL_PROPERTY_STATE "")
-  endif()
-  # Delistify (remove ; separators) the potentially set of items to append
-  # to the specified target property.
-  string(REPLACE ";" " " ITEMS_TO_APPEND "${ARGN}")
-  set_target_properties(${TARGET} PROPERTIES ${PROPERTY}
-    "${INITIAL_PROPERTY_STATE} ${ITEMS_TO_APPEND}")
-endfunction()
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index f57c2e8..dd3e12d 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -28,17 +28,6 @@
 #
 # Author: keir@google.com (Keir Mierle)
 
-# Always build position-independent code (PIC), even when building Ceres as a
-# static library so that shared libraries can link against it, not just
-# executables (PIC does not apply on Windows). Global variable can be overridden
-# by the user whereas target properties can be not.
-set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-# Set the default symbol visibility to hidden to unify the behavior among
-# the various compilers and to get smaller binaries
-set(CMAKE_C_VISIBILITY_PRESET hidden)
-set(CMAKE_CXX_VISIBILITY_PRESET hidden)
-set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
-
 # Avoid 'xxx.cc has no symbols' warnings from source files which are 'empty'
 # when their enclosing #ifdefs are disabled.
 if (CERES_THREADING_MODEL STREQUAL "CXX_THREADS")
@@ -420,15 +409,18 @@
   target_include_directories(test_util PUBLIC ${Ceres_SOURCE_DIR}/internal)
   target_link_libraries (test_util PUBLIC ceres_static gflags)
 
-  include(AppendTargetProperty)
-
   add_library(gtest gmock_gtest_all.cc gmock_main.cc)
   if (BUILD_SHARED_LIBS)
     # Define gtest-specific shared library flags for compilation.
-    append_target_property(gtest COMPILE_DEFINITIONS
-      GTEST_CREATE_SHARED_LIBRARY)
+    #
+    # NOTE: We export the test_srcdir flag not from gflags but from our gtest
+    # target. Therefore, the gflags visibility macro must be overriden by that
+    # of gtest.
+    target_compile_definitions(gtest
+      PRIVATE GTEST_CREATE_SHARED_LIBRARY=1
+              GFLAGS_DLL_DEFINE_FLAG=GTEST_API_
+      INTERFACE GTEST_LINKED_AS_SHARED_LIBRARY=1)
   endif()
-  set_target_properties (gtest PROPERTIES CXX_VISIBILITY_PRESET default)
 
   target_include_directories(gtest PRIVATE ${Ceres_SOURCE_DIR}/internal/ceres)
   target_link_libraries(gtest PRIVATE Ceres::ceres gflags)
@@ -443,11 +435,6 @@
       PRIVATE ${Ceres_SOURCE_DIR}/internal/ceres
               ${CERES_LIBRARY_PRIVATE_DEPENDENCIES_INCLUDE_DIRS})
     target_link_libraries(${NAME}_test PRIVATE gtest test_util ceres_static)
-    if (BUILD_SHARED_LIBS)
-      # Define gtest-specific shared library flags for linking.
-      append_target_property(${NAME}_test COMPILE_DEFINITIONS
-        GTEST_LINKED_AS_SHARED_LIBRARY)
-    endif()
     add_test(NAME ${NAME}_test
              COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${NAME}_test
              --test_srcdir
