Use template for CMake installation.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6353184..8b294ec 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
 cmake_minimum_required(VERSION 3.0)
-project(double-conversion VERSION 2.0.1)
+project(double-conversion VERSION 3.0.0)
 
 set(headers
     double-conversion/bignum.h
@@ -28,11 +28,7 @@
     $<INSTALL_INTERFACE:include>)
 
 # pick a version #
-set(double-conversion_SOVERSION_MAJOR 1)
-set(double-conversion_SOVERSION_MINOR 0)
-set(double-conversion_SOVERSION_PATCH 0)
-set(double-conversion_SOVERSION ${double-conversion_SOVERSION_MAJOR}.${double-conversion_SOVERSION_MINOR}.${double-conversion_SOVERSION_PATCH})
-set_property(TARGET double-conversion PROPERTY SOVERSION ${double-conversion_SOVERSION})
+set_property(TARGET double-conversion PROPERTY SOVERSION ${PROJECT_VERSION})
 
 # set up testing if requested
 option(BUILD_TESTING "Build test programs" OFF)
@@ -42,34 +38,75 @@
   add_subdirectory(test)
 endif()
 
-include(GNUInstallDirs)
-install(TARGETS double-conversion EXPORT double-conversionTargets
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-install(FILES ${headers}
-        DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/double-conversion)
+####
+# Installation (https://github.com/forexample/package-example)
 
+# Layout. This works for all platforms:
+#   * <prefix>/lib/cmake/<PROJECT-NAME>
+#   * <prefix>/lib/
+#   * <prefix>/include/
+set(config_install_dir "lib/cmake/${PROJECT_NAME}")
+set(include_install_dir "include")
+
+set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
+
+# Configuration
+set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
+set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
+set(targets_export_name "${PROJECT_NAME}Targets")
+set(namespace "${PROJECT_NAME}::")
+
+# Include module with function 'write_basic_package_version_file'
 include(CMakePackageConfigHelpers)
-configure_package_config_file(
-    cmake/double-conversionConfig.cmake.in
-    "${CMAKE_CURRENT_BINARY_DIR}/double-conversion/double-conversionConfig.cmake"
-    INSTALL_DESTINATION "${LIB_INSTALL_DIR}/double-conversion/cmake")
+
+# Configure '<PROJECT-NAME>ConfigVersion.cmake'
+# Note: PROJECT_VERSION is used as a VERSION
 write_basic_package_version_file(
-    "${PROJECT_BINARY_DIR}/double-conversion/double-conversionConfigVersion.cmake"
-    VERSION ${PROJECT_VERSION}
-    COMPATIBILITY SameMajorVersion)
+    "${version_config}" COMPATIBILITY SameMajorVersion
+)
 
-export(EXPORT double-conversionTargets
-       FILE "${CMAKE_CURRENT_BINARY_DIR}/double-conversion/double-conversionTargets.cmake"
-       NAMESPACE double-conversion::)
+# Configure '<PROJECT-NAME>Config.cmake'
+# Use variables:
+#   * targets_export_name
+#   * PROJECT_NAME
+configure_package_config_file(
+    "cmake/Config.cmake.in"
+    "${project_config}"
+    INSTALL_DESTINATION "${config_install_dir}"
+)
 
-set(ConfigPackageLocation lib/cmake/double-conversion)
-install(EXPORT double-conversionTargets
-        FILE double-conversionTargets.cmake
-        NAMESPACE double-conversion::
-        DESTINATION ${ConfigPackageLocation})
-install(FILES "${CMAKE_CURRENT_BINARY_DIR}/double-conversion/double-conversionConfig.cmake"
-              "${CMAKE_CURRENT_BINARY_DIR}/double-conversion/double-conversionConfigVersion.cmake"
-        DESTINATION ${ConfigPackageLocation}
-        COMPONENT Devel)
+# Targets:
+#   * <prefix>/lib/libdouble-conversion.a
+#   * header location after install: <prefix>/include/double-conversion/*.h
+#   * headers can be included by C++ code `#include <double-conversion/*.h>`
+install(
+    TARGETS double-conversion
+    EXPORT "${targets_export_name}"
+    LIBRARY DESTINATION "lib"
+    ARCHIVE DESTINATION "lib"
+    RUNTIME DESTINATION "bin"
+    INCLUDES DESTINATION "${include_install_dir}"
+)
+
+# Headers:
+#   * double-conversion/*.h -> <prefix>/include/double-conversion/*.h
+install(
+    FILES ${headers}
+    DESTINATION "${include_install_dir}/double-conversion"
+)
+
+# Config
+#   * <prefix>/lib/cmake/double-conversion/double-conversionConfig.cmake
+#   * <prefix>/lib/cmake/double-conversion/double-conversionConfigVersion.cmake
+install(
+    FILES "${project_config}" "${version_config}"
+    DESTINATION "${config_install_dir}"
+)
+
+# Config
+#   * <prefix>/lib/cmake/double-conversion/double-conversionTargets.cmake
+install(
+    EXPORT "${targets_export_name}"
+    NAMESPACE "${namespace}"
+    DESTINATION "${config_install_dir}"
+)
diff --git a/cmake/double-conversionConfig.cmake.in b/cmake/Config.cmake.in
similarity index 100%
rename from cmake/double-conversionConfig.cmake.in
rename to cmake/Config.cmake.in