diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5a0de03..76e08d0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -729,6 +729,7 @@
 # imported library targets for Ceres (with dependency relations) which can be
 # used in target_link_libraries() calls in the client project to use Ceres.
 install(EXPORT CeresExport
+        NAMESPACE Ceres::
         DESTINATION ${RELATIVE_CMAKECONFIG_INSTALL_DIR} FILE CeresTargets.cmake)
 
 # Save the relative path from the installed CeresConfig.cmake file to the
@@ -784,7 +785,9 @@
 
   # Analogously to install(EXPORT ...), export the Ceres target from the build
   # directory as a package called Ceres into the local CMake package registry.
-  export(TARGETS ceres FILE ${Ceres_BINARY_DIR}/CeresTargets.cmake)
+  export(TARGETS ceres
+         NAMESPACE Ceres::
+         FILE ${Ceres_BINARY_DIR}/CeresTargets.cmake)
   export(PACKAGE ${CMAKE_PROJECT_NAME})
 
   # Configure a CeresConfig.cmake file for the export of the Ceres build
diff --git a/cmake/CeresConfig.cmake.in b/cmake/CeresConfig.cmake.in
index 94099a9..7ad5bed 100644
--- a/cmake/CeresConfig.cmake.in
+++ b/cmake/CeresConfig.cmake.in
@@ -262,7 +262,7 @@
   include(${CERES_CURRENT_CONFIG_DIR}/CeresTargets.cmake)
 endif (NOT TARGET ceres AND NOT Ceres_BINARY_DIR)
 # Set the expected XX_LIBRARIES variable for FindPackage().
-set(CERES_LIBRARIES ceres)
+set(CERES_LIBRARIES Ceres::ceres)
 
 # Reset CMake module path to its state when this script was called.
 set(CMAKE_MODULE_PATH ${CALLERS_CMAKE_MODULE_PATH})
@@ -320,3 +320,11 @@
 # Ceres_FOUND is not (explicitly, i.e. undefined does not count) set
 # to FALSE.
 set(CERES_FOUND TRUE)
+
+if (NOT TARGET ceres)
+  # For backwards compatibility, create a local 'alias' target with the
+  # non-namespace-qualified Ceres target name. Note that this is not a
+  # true ALIAS library in CMake terms as they cannot point to imported targets.
+  add_library(ceres INTERFACE IMPORTED)
+  set_target_properties(ceres PROPERTIES INTERFACE_LINK_LIBRARIES Ceres::ceres)
+endif()
diff --git a/docs/source/installation.rst b/docs/source/installation.rst
index c6ddfff..3a6a5d4 100644
--- a/docs/source/installation.rst
+++ b/docs/source/installation.rst
@@ -849,13 +849,13 @@
 
     # helloworld
     add_executable(helloworld helloworld.cc)
-    target_link_libraries(helloworld ${CERES_LIBRARIES})
+    target_link_libraries(helloworld Ceres::ceres)
 
 Irrespective of whether Ceres was installed or exported, if multiple
 versions are detected, set: ``Ceres_DIR`` to control which is used.
 If Ceres was installed ``Ceres_DIR`` should be the path to the
 directory containing the installed ``CeresConfig.cmake`` file
-(e.g. ``/usr/local/share/Ceres``).  If Ceres was exported, then
+(e.g. ``/usr/local/lib/cmake/Ceres``).  If Ceres was exported, then
 ``Ceres_DIR`` should be the path to the exported Ceres build
 directory.
 
@@ -998,7 +998,7 @@
 directory is exported into the local CMake package registry (see
 :ref:`section-install-vs-export`), in addition to the public headers
 and compiled libraries, a set of CMake-specific project configuration
-files are also installed to: ``<INSTALL_ROOT>/share/Ceres`` (if Ceres
+files are also installed to: ``<INSTALL_ROOT>/lib/cmake/Ceres`` (if Ceres
 is installed), or created in the build directory (if Ceres' build
 directory is exported).  When `find_package
 <http://www.cmake.org/cmake/help/v3.2/command/find_package.html>`_ is
@@ -1013,9 +1013,9 @@
 
    Which is written by the developers of the project, and is
    configured with the selected options and installed locations when
-   the project is built and defines the CMake variables:
-   ``<PROJECT_NAME>_INCLUDE_DIRS`` & ``<PROJECT_NAME>_LIBRARIES``
-   which are used by the caller to import the project.
+   the project is built and imports the project targets and/or defines
+   the legacy CMake variables: ``<PROJECT_NAME>_INCLUDE_DIRS`` &
+   ``<PROJECT_NAME>_LIBRARIES`` which are used by the caller.
 
 The ``<PROJECT_NAME>Config.cmake`` typically includes a second file
 installed to the same location:
@@ -1030,32 +1030,26 @@
 project using ``add_library()``.  However, imported targets refer to
 objects that have already been built by a different CMake project.
 Principally, an imported target contains the location of the compiled
-object and all of its public dependencies required to link against it.
-Any locally declared target can depend on an imported target, and
-CMake will manage the dependency chain, just as if the imported target
-had been declared locally by the current project.
+object and all of its public dependencies required to link against it
+as well as all required include directories.  Any locally declared target
+can depend on an imported target, and CMake will manage the dependency
+chain, just as if the imported target had been declared locally by the
+current project.
 
 Crucially, just like any locally declared CMake target, an imported target is
 identified by its **name** when adding it as a dependency to another target.
 
-Thus, if in a project using Ceres you had the following in your CMakeLists.txt:
+Since v2.0, Ceres has used the target namespace feature of CMake to prefix
+its export targets: ``Ceres::ceres``.  However, historically the Ceres target
+did not have a namespace, and was just called ``ceres``.
 
-.. code-block:: cmake
-
-    find_package(Ceres REQUIRED)
-    message("CERES_LIBRARIES = ${CERES_LIBRARIES}")
-
-You would see the output: ``CERES_LIBRARIES = ceres``.  **However**,
-here ``ceres`` is an **imported target** created when
-``CeresTargets.cmake`` was read as part of ``find_package(Ceres
-REQUIRED)``.  It does **not** refer (directly) to the compiled Ceres
-library: ``libceres.a/so/dylib/lib``.  This distinction is important,
-as depending on the options selected when it was built, Ceres can have
-public link dependencies which are encapsulated in the imported target
-and automatically added to the link step when Ceres is added as a
-dependency of another target by CMake.  In this case, linking only
-against ``libceres.a/so/dylib/lib`` without these other public
-dependencies would result in a linker error.
+Whilst an alias target called ``ceres`` is still provided in v2.0 for backwards
+compatibility, it creates a potential drawback, if you failed to call
+``find_package(Ceres)``, and Ceres is installed in a default search path for
+your compiler, then instead of matching the imported Ceres target, it will
+instead match the installed libceres.so/dylib/a library.  If this happens you
+will get either compiler errors for missing include directories or linker errors
+due to missing references to Ceres public dependencies.
 
 Note that this description applies both to projects that are
 **installed** using CMake, and to those whose **build directory is
@@ -1119,26 +1113,6 @@
 
 .. code-block:: cmake
 
-    # Importing Ceres in FooConfig.cmake using CMake 2.8.x style.
-    #
-    # When configure_file() is used to generate FooConfig.cmake from
-    # FooConfig.cmake.in, @Ceres_DIR@ will be replaced with the current
-    # value of Ceres_DIR being used by Foo.  This should be passed as a hint
-    # when invoking find_package(Ceres) to ensure that the same install of
-    # Ceres is used as was used to build Foo.
-    set(CERES_DIR_HINTS @Ceres_DIR@)
-
-    # Forward the QUIET / REQUIRED options.
-    if (Foo_FIND_QUIETLY)
-       find_package(Ceres QUIET HINTS ${CERES_DIR_HINTS})
-    elseif (Foo_FIND_REQUIRED)
-       find_package(Ceres REQUIRED HINTS ${CERES_DIR_HINTS})
-    else ()
-       find_package(Ceres HINTS ${CERES_DIR_HINTS})
-    endif()
-
-.. code-block:: cmake
-
     # Importing Ceres in FooConfig.cmake using CMake 3.x style.
     #
     # In CMake v3.x, the find_dependency() macro exists to forward the REQUIRED
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 3d86be8..a6b3f5d 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -36,22 +36,22 @@
 endif()
 
 add_executable(helloworld helloworld.cc)
-target_link_libraries(helloworld ceres)
+target_link_libraries(helloworld Ceres::ceres)
 
 add_executable(helloworld_numeric_diff helloworld_numeric_diff.cc)
-target_link_libraries(helloworld_numeric_diff ceres)
+target_link_libraries(helloworld_numeric_diff Ceres::ceres)
 
 add_executable(helloworld_analytic_diff helloworld_analytic_diff.cc)
-target_link_libraries(helloworld_analytic_diff ceres)
+target_link_libraries(helloworld_analytic_diff Ceres::ceres)
 
 add_executable(curve_fitting curve_fitting.cc)
-target_link_libraries(curve_fitting ceres)
+target_link_libraries(curve_fitting Ceres::ceres)
 
 add_executable(rosenbrock rosenbrock.cc)
-target_link_libraries(rosenbrock ceres)
+target_link_libraries(rosenbrock Ceres::ceres)
 
 add_executable(curve_fitting_c curve_fitting.c)
-target_link_libraries(curve_fitting_c ceres)
+target_link_libraries(curve_fitting_c Ceres::ceres)
 # Force CMake to link curve_fitting_c using the C linker, this is important
 # when Ceres was compiled using C++11 to ensure that -std=c++11 is not passed
 # through.
@@ -64,51 +64,51 @@
 endif (NOT MSVC)
 
 add_executable(ellipse_approximation ellipse_approximation.cc)
-target_link_libraries(ellipse_approximation ceres)
+target_link_libraries(ellipse_approximation Ceres::ceres)
 
 add_executable(robust_curve_fitting robust_curve_fitting.cc)
-target_link_libraries(robust_curve_fitting ceres)
+target_link_libraries(robust_curve_fitting Ceres::ceres)
 
 add_executable(simple_bundle_adjuster simple_bundle_adjuster.cc)
-target_link_libraries(simple_bundle_adjuster ceres)
+target_link_libraries(simple_bundle_adjuster Ceres::ceres)
 
 if (GFLAGS)
   add_executable(powell powell.cc)
-  target_link_libraries(powell ceres ${GFLAGS_LIBRARIES})
+  target_link_libraries(powell Ceres::ceres ${GFLAGS_LIBRARIES})
 
   add_executable(nist nist.cc)
-  target_link_libraries(nist ceres ${GFLAGS_LIBRARIES})
+  target_link_libraries(nist Ceres::ceres ${GFLAGS_LIBRARIES})
   if (MSVC)
     target_compile_options(nist PRIVATE "/bigobj")
   endif()
 
   add_executable(more_garbow_hillstrom more_garbow_hillstrom.cc)
-  target_link_libraries(more_garbow_hillstrom ceres ${GFLAGS_LIBRARIES})
+  target_link_libraries(more_garbow_hillstrom Ceres::ceres ${GFLAGS_LIBRARIES})
 
   add_executable(circle_fit circle_fit.cc)
-  target_link_libraries(circle_fit ceres ${GFLAGS_LIBRARIES})
+  target_link_libraries(circle_fit Ceres::ceres ${GFLAGS_LIBRARIES})
 
   add_executable(bundle_adjuster
                  bundle_adjuster.cc
                  bal_problem.cc)
-  target_link_libraries(bundle_adjuster ceres ${GFLAGS_LIBRARIES})
+  target_link_libraries(bundle_adjuster Ceres::ceres ${GFLAGS_LIBRARIES})
 
   add_executable(libmv_bundle_adjuster
                  libmv_bundle_adjuster.cc)
-  target_link_libraries(libmv_bundle_adjuster ceres ${GFLAGS_LIBRARIES})
+  target_link_libraries(libmv_bundle_adjuster Ceres::ceres ${GFLAGS_LIBRARIES})
 
   add_executable(libmv_homography
                  libmv_homography.cc)
-  target_link_libraries(libmv_homography ceres ${GFLAGS_LIBRARIES})
+  target_link_libraries(libmv_homography Ceres::ceres ${GFLAGS_LIBRARIES})
 
   add_executable(denoising
                  denoising.cc
                  fields_of_experts.cc)
-  target_link_libraries(denoising ceres ${GFLAGS_LIBRARIES})
+  target_link_libraries(denoising Ceres::ceres ${GFLAGS_LIBRARIES})
 
   add_executable(robot_pose_mle
                  robot_pose_mle.cc)
-  target_link_libraries(robot_pose_mle ceres ${GFLAGS_LIBRARIES})
+  target_link_libraries(robot_pose_mle Ceres::ceres ${GFLAGS_LIBRARIES})
 
 endif (GFLAGS)
 
diff --git a/examples/sampled_function/CMakeLists.txt b/examples/sampled_function/CMakeLists.txt
index 57f31d1..8a17cad 100644
--- a/examples/sampled_function/CMakeLists.txt
+++ b/examples/sampled_function/CMakeLists.txt
@@ -29,4 +29,4 @@
 # Author: vitus@google.com (Michael Vitus)
 
 add_executable(sampled_function sampled_function.cc)
-target_link_libraries(sampled_function ceres)
+target_link_libraries(sampled_function Ceres::ceres)
diff --git a/examples/slam/pose_graph_2d/CMakeLists.txt b/examples/slam/pose_graph_2d/CMakeLists.txt
index d654e8c..2b35c7f 100644
--- a/examples/slam/pose_graph_2d/CMakeLists.txt
+++ b/examples/slam/pose_graph_2d/CMakeLists.txt
@@ -35,5 +35,5 @@
     pose_graph_2d.cc
     pose_graph_2d_error_term.h
     types.h)
-  target_link_libraries(pose_graph_2d ceres ${GFLAGS_LIBRARIES})
-endif (GFLAGS)
\ No newline at end of file
+  target_link_libraries(pose_graph_2d Ceres::ceres ${GFLAGS_LIBRARIES})
+endif (GFLAGS)
diff --git a/examples/slam/pose_graph_3d/CMakeLists.txt b/examples/slam/pose_graph_3d/CMakeLists.txt
index 2c5fdc3..b75e2ce 100644
--- a/examples/slam/pose_graph_3d/CMakeLists.txt
+++ b/examples/slam/pose_graph_3d/CMakeLists.txt
@@ -30,5 +30,5 @@
 
 if (GFLAGS)
   add_executable(pose_graph_3d pose_graph_3d.cc)
-  target_link_libraries(pose_graph_3d ceres ${GFLAGS_LIBRARIES})
-endif (GFLAGS)
\ No newline at end of file
+  target_link_libraries(pose_graph_3d Ceres::ceres ${GFLAGS_LIBRARIES})
+endif (GFLAGS)
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index 3711222..80125c9 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -346,6 +346,9 @@
         LIBRARY DESTINATION lib${LIB_SUFFIX}
         ARCHIVE DESTINATION lib${LIB_SUFFIX})
 
+# Create a local alias target that matches the expected installed target.
+add_library(Ceres::ceres ALIAS ceres)
+
 if (BUILD_TESTING AND GFLAGS)
   add_library(gtest gmock_gtest_all.cc gmock_main.cc)
   target_include_directories(gtest PUBLIC ${Ceres_SOURCE_DIR}/internal/ceres)
@@ -364,11 +367,11 @@
   if (MINIGLOG)
     # When using miniglog, it is compiled into Ceres, thus Ceres becomes
     # the library against which other libraries should link for logging.
-    target_link_libraries(gtest PUBLIC gflags ceres)
-    target_link_libraries(test_util PUBLIC ceres gtest)
+    target_link_libraries(gtest PUBLIC gflags Ceres::ceres)
+    target_link_libraries(test_util PUBLIC Ceres::ceres gtest)
   else (MINIGLOG)
     target_link_libraries(gtest PUBLIC gflags ${GLOG_LIBRARIES})
-    target_link_libraries(test_util PUBLIC ceres gtest ${GLOG_LIBRARIES})
+    target_link_libraries(test_util PUBLIC Ceres::ceres gtest ${GLOG_LIBRARIES})
   endif (MINIGLOG)
 
   macro (CERES_TEST NAME)
@@ -382,7 +385,7 @@
              ${Ceres_SOURCE_DIR}/internal/ceres
              ${CERES_LIBRARY_PRIVATE_DEPENDENCIES_INCLUDE_DIRS})
 
-    target_link_libraries(${NAME}_test PUBLIC test_util ceres gtest)
+    target_link_libraries(${NAME}_test PUBLIC test_util Ceres::ceres gtest)
     if (BUILD_SHARED_LIBS)
       # Define gtest-specific shared library flags for linking.
       append_target_property(${NAME}_test COMPILE_DEFINITIONS
@@ -491,7 +494,7 @@
 endif (BUILD_TESTING AND GFLAGS)
 
 macro(add_dependencies_to_benchmark BENCHMARK_TARGET)
-  target_link_libraries(${BENCHMARK_TARGET} PUBLIC ceres benchmark::benchmark)
+  target_link_libraries(${BENCHMARK_TARGET} PUBLIC Ceres::ceres benchmark::benchmark)
   target_include_directories(${BENCHMARK_TARGET} PUBLIC
                              ${Ceres_SOURCE_DIR}/internal
                              ${Ceres_SOURCE_DIR}/internal/ceres
