diff --git a/CMakeLists.txt b/CMakeLists.txt
index 99376704..3d6ea093 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -86,10 +86,10 @@ include(CMakePackageConfigHelpers)
 write_basic_package_version_file(
     ${NLOHMANN_JSON_CMAKE_VERSION_CONFIG_FILE} COMPATIBILITY SameMajorVersion
 )
-configure_package_config_file(
+configure_file(
     ${NLOHMANN_JSON_CMAKE_CONFIG_TEMPLATE}
     ${NLOHMANN_JSON_CMAKE_PROJECT_CONFIG_FILE}
-    INSTALL_DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR}
+    @ONLY
 )
 
 install(
@@ -121,4 +121,3 @@ install(
     NAMESPACE ${PROJECT_NAME}::
     DESTINATION ${NLOHMANN_JSON_CONFIG_INSTALL_DIR}
 )
-export(PACKAGE ${PROJECT_NAME})
\ No newline at end of file
diff --git a/README.md b/README.md
index c41cb8ea..013db618 100644
--- a/README.md
+++ b/README.md
@@ -69,6 +69,18 @@ to the files you want to process JSON and set the necessary switches to enable C
 
 You can further use file [`include/nlohmann/json_fwd.hpp`](https://github.com/nlohmann/json/blob/develop/include/nlohmann/json_fwd.hpp) for forward-declarations. The installation of json_fwd.hpp (as part of cmake's install step), can be achieved by setting `-DJSON_MultipleHeaders=ON`.
 
+If this library was built with CMake then you can consume it from another CMake project by using the namespaced imported target from the generated package configuration:
+```cmake
+# CMakeLists.txt
+find_package(nlohmann_json REQUIRED)
+...
+add_library(foo ...)
+...
+target_link_libraries(foo PRIVATE nlohmann_json::nlohmann_json)
+```
+The package configuration file, `nlohmann_jsonConfig.cmake`, can be used either from an install tree or directly out of the build tree.
+
+
 ### Package Managers
 
 :beer: If you are using OS X and [Homebrew](http://brew.sh), just type `brew tap nlohmann/json` and `brew install nlohmann_json` and you're set. If you want the bleeding edge rather than the latest release, use `brew install nlohmann_json --HEAD`.
diff --git a/cmake/config.cmake.in b/cmake/config.cmake.in
index 8d52ae14..9a17a7d7 100644
--- a/cmake/config.cmake.in
+++ b/cmake/config.cmake.in
@@ -1,9 +1,15 @@
-@PACKAGE_INIT@
+include(FindPackageHandleStandardArgs)
+set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE})
+find_package_handle_standard_args(@PROJECT_NAME@ CONFIG_MODE)
+
 if(NOT TARGET @PROJECT_NAME@::@NLOHMANN_JSON_TARGET_NAME@)
     include("${CMAKE_CURRENT_LIST_DIR}/@NLOHMANN_JSON_TARGETS_EXPORT_NAME@.cmake")
     if((NOT TARGET @NLOHMANN_JSON_TARGET_NAME@) AND
-       (PACKAGE_FIND_VERSION VERSION_LESS 3.2.0))
-      add_library(@NLOHMANN_JSON_TARGET_NAME@ ALIAS @PROJECT_NAME@::@NLOHMANN_JSON_TARGET_NAME@)
+       (NOT @PROJECT_NAME@_FIND_VERSION OR
+        @PROJECT_NAME@_FIND_VERSION VERSION_LESS 3.2.0))
+        add_library(@NLOHMANN_JSON_TARGET_NAME@ INTERFACE IMPORTED)
+        set_target_properties(@NLOHMANN_JSON_TARGET_NAME@ PROPERTIES
+            INTERFACE_LINK_LIBRARIES @PROJECT_NAME@::@NLOHMANN_JSON_TARGET_NAME@
+        )
     endif()
 endif()
-check_required_components("@PROJECT_NAME@")
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index c0f40728..14493bd4 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -133,3 +133,10 @@ foreach(file ${files})
     endif()
 
 endforeach()
+
+#############################################################################
+# Test the generated build configs
+#############################################################################
+add_subdirectory(cmake_import)
+add_subdirectory(cmake_import_minver)
+add_subdirectory(cmake_add_subdirectory)
diff --git a/test/cmake_add_subdirectory/CMakeLists.txt b/test/cmake_add_subdirectory/CMakeLists.txt
new file mode 100644
index 00000000..ad04547e
--- /dev/null
+++ b/test/cmake_add_subdirectory/CMakeLists.txt
@@ -0,0 +1,15 @@
+add_test(NAME cmake_add_subdirectory_configure
+  COMMAND ${CMAKE_COMMAND}
+    -G "${CMAKE_GENERATOR}"
+    -Dnlohmann_json_source=${PROJECT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/project
+)
+add_test(NAME cmake_add_subdirectory_build
+  COMMAND ${CMAKE_COMMAND} --build .
+)
+set_tests_properties(cmake_add_subdirectory_configure PROPERTIES
+  FIXTURES_SETUP cmake_add_subdirectory
+)
+set_tests_properties(cmake_add_subdirectory_build PROPERTIES
+  FIXTURES_REQUIRED cmake_add_subdirectory
+)
diff --git a/test/cmake_add_subdirectory/project/CMakeLists.txt b/test/cmake_add_subdirectory/project/CMakeLists.txt
new file mode 100644
index 00000000..2c5be183
--- /dev/null
+++ b/test/cmake_add_subdirectory/project/CMakeLists.txt
@@ -0,0 +1,13 @@
+cmake_minimum_required(VERSION 3.8)
+
+project(DummyImport CXX)
+
+set(JSON_BuildTests OFF CACHE INTERNAL "")
+add_subdirectory(${nlohmann_json_source}
+   ${CMAKE_CURRENT_BINARY_DIR}/nlohmann_json)
+
+add_executable(with_namespace_target main.cpp)
+target_link_libraries(with_namespace_target nlohmann_json::nlohmann_json)
+
+add_executable(without_namespace_target main.cpp)
+target_link_libraries(without_namespace_target nlohmann_json)
diff --git a/test/cmake_add_subdirectory/project/main.cpp b/test/cmake_add_subdirectory/project/main.cpp
new file mode 100644
index 00000000..d2d118b8
--- /dev/null
+++ b/test/cmake_add_subdirectory/project/main.cpp
@@ -0,0 +1,8 @@
+#include <nlohmann/json.hpp>
+
+int main(int argc, char **argv)
+{
+    nlohmann::json j;
+
+    return 0;
+}
diff --git a/test/cmake_import/CMakeLists.txt b/test/cmake_import/CMakeLists.txt
new file mode 100644
index 00000000..911c342c
--- /dev/null
+++ b/test/cmake_import/CMakeLists.txt
@@ -0,0 +1,15 @@
+add_test(NAME cmake_import_configure
+  COMMAND ${CMAKE_COMMAND}
+    -G "${CMAKE_GENERATOR}"
+    -Dnlohmann_json_DIR=${PROJECT_BINARY_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/project
+)
+add_test(NAME cmake_import_build
+  COMMAND ${CMAKE_COMMAND} --build .
+)
+set_tests_properties(cmake_import_configure PROPERTIES
+  FIXTURES_SETUP cmake_import
+)
+set_tests_properties(cmake_import_build PROPERTIES
+  FIXTURES_REQUIRED cmake_import
+)
diff --git a/test/cmake_import/project/CMakeLists.txt b/test/cmake_import/project/CMakeLists.txt
new file mode 100644
index 00000000..d268d72c
--- /dev/null
+++ b/test/cmake_import/project/CMakeLists.txt
@@ -0,0 +1,12 @@
+cmake_minimum_required(VERSION 3.8)
+
+project(DummyImport CXX)
+
+find_package(nlohmann_json REQUIRED)
+
+add_executable(with_namespace_target main.cpp)
+target_link_libraries(with_namespace_target nlohmann_json::nlohmann_json)
+
+add_executable(without_namespace_target main.cpp)
+target_link_libraries(without_namespace_target nlohmann_json)
+
diff --git a/test/cmake_import/project/main.cpp b/test/cmake_import/project/main.cpp
new file mode 100644
index 00000000..d2d118b8
--- /dev/null
+++ b/test/cmake_import/project/main.cpp
@@ -0,0 +1,8 @@
+#include <nlohmann/json.hpp>
+
+int main(int argc, char **argv)
+{
+    nlohmann::json j;
+
+    return 0;
+}
diff --git a/test/cmake_import_minver/CMakeLists.txt b/test/cmake_import_minver/CMakeLists.txt
new file mode 100644
index 00000000..8cef2fab
--- /dev/null
+++ b/test/cmake_import_minver/CMakeLists.txt
@@ -0,0 +1,15 @@
+add_test(NAME cmake_import_minver_configure
+  COMMAND ${CMAKE_COMMAND}
+    -G "${CMAKE_GENERATOR}"
+    -Dnlohmann_json_DIR=${PROJECT_BINARY_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}/project
+)
+add_test(NAME cmake_import_minver_build
+  COMMAND ${CMAKE_COMMAND} --build .
+)
+set_tests_properties(cmake_import_minver_configure PROPERTIES
+  FIXTURES_SETUP cmake_import_minver
+)
+set_tests_properties(cmake_import_minver_build PROPERTIES
+  FIXTURES_REQUIRED cmake_import_minver
+)
diff --git a/test/cmake_import_minver/project/CMakeLists.txt b/test/cmake_import_minver/project/CMakeLists.txt
new file mode 100644
index 00000000..eeef3296
--- /dev/null
+++ b/test/cmake_import_minver/project/CMakeLists.txt
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION 3.8)
+
+project(DummyImportMinVer CXX)
+
+find_package(nlohmann_json 3.2.0 REQUIRED)
+
+add_executable(with_namespace_target main.cpp)
+target_link_libraries(with_namespace_target nlohmann_json::nlohmann_json)
diff --git a/test/cmake_import_minver/project/main.cpp b/test/cmake_import_minver/project/main.cpp
new file mode 100644
index 00000000..d2d118b8
--- /dev/null
+++ b/test/cmake_import_minver/project/main.cpp
@@ -0,0 +1,8 @@
+#include <nlohmann/json.hpp>
+
+int main(int argc, char **argv)
+{
+    nlohmann::json j;
+
+    return 0;
+}