diff --git a/CHANGELOG.md b/CHANGELOG.md
index 11f2128ebec3e1ed4b2f4ff9c97598439efb8b3e..0452d4b6ee2cab3de420bce2f144b408465f0fa3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,9 @@ current (development)
 - Feature: `input` is now supporting multiple lines.
 - Feature: `input` style is now customizeable.
 
+### Build
+- Check version compatibility when using cmake find_package()
+
 4.1.0
 -----
 
diff --git a/ftxui-config.cmake.in b/cmake/ftxui-config.cmake.in
similarity index 56%
rename from ftxui-config.cmake.in
rename to cmake/ftxui-config.cmake.in
index 5045a69c1991ad04c5ecb417309342c62b32d3c8..b04ba33eca5b7df4537779f87f8b8733cb179bdc 100644
--- a/ftxui-config.cmake.in
+++ b/cmake/ftxui-config.cmake.in
@@ -2,3 +2,5 @@
 
 include(CMakeFindDependencyMacro)
 find_dependency(Threads)
+
+include("${CMAKE_CURRENT_LIST_DIR}/ftxui-targets.cmake")
diff --git a/cmake/ftxui_install.cmake b/cmake/ftxui_install.cmake
index 605841d6b66bde10026d2b5d0d72d938d4d50501..d6de49147ed6611e7644914a0adabe7eb2653bbf 100644
--- a/cmake/ftxui_install.cmake
+++ b/cmake/ftxui_install.cmake
@@ -3,41 +3,60 @@ if(NOT FTXUI_ENABLE_INSTALL)
 endif()
 
 include(GNUInstallDirs)
-install(TARGETS screen dom component
-    EXPORT ftxui-export
-    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-)
+include(CMakePackageConfigHelpers)
 
-install(DIRECTORY include/ftxui DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+# ------------------------------------------------------------------------------
+# Install the library and its public headers into the standard subdirectories
+# ------------------------------------------------------------------------------
+install(
+  TARGETS screen dom component
+  EXPORT ftxui-targets
+  LIBRARY  DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  ARCHIVE  DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  )
 
-# CMake package configuration for easy use of library in CMake
-include(CMakePackageConfigHelpers)
-configure_package_config_file(ftxui-config.cmake.in
-  ${CMAKE_CURRENT_BINARY_DIR}/ftxui-config.cmake
+install(
+  DIRECTORY include/ftxui
+  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+  )
+
+# ------------------------------------------------------------------------------
+# Install the exported cmake targets for use in other CMake projects.
+# ------------------------------------------------------------------------------
+install(
+  EXPORT ftxui-targets
+  NAMESPACE ftxui::
+  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui
+  )
+
+# ------------------------------------------------------------------------------
+# Create and install the ftuxi-config.cmake and ftuxi-config-version.cmake files
+# needed to support users of find_package()
+# ------------------------------------------------------------------------------
+configure_package_config_file(
+  ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ftxui-config.cmake.in
+  ${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config.cmake
   INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/ftxui/cmake
   PATH_VARS CMAKE_INSTALL_INCLUDEDIR
-)
+  )
 write_basic_package_version_file(
-  ftxui-config-version.cmake
+  ${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config-version.cmake
   VERSION ${PACKAGE_VERSION}
-  COMPATIBILITY AnyNewerVersion
-)
-
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ftxui-config.cmake
+  COMPATIBILITY SameMajorVersion
+  )
+install(
+  FILES
+  ${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config.cmake
+  ${CMAKE_CURRENT_BINARY_DIR}/cmake/ftxui-config-version.cmake
   DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui
-)
-install(EXPORT ftxui-export
-  FILE ftxui-config-version.cmake
-  NAMESPACE ftxui::
-  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/ftxui
-)
-
-# pkg-config file for easy use of library in build systems other than CMake
-configure_file(ftxui.pc.in
-  ${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc
-  @ONLY)
+  )
 
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc
-  DESTINATION lib/pkgconfig
-)
+# ------------------------------------------------------------------------------
+# Create and install pkg-config file for easy use of library in build systems
+# other than CMake:
+# ------------------------------------------------------------------------------
+configure_file(ftxui.pc.in ${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc @ONLY)
+install(
+  FILES ${CMAKE_CURRENT_BINARY_DIR}/ftxui.pc
+  DESTINATION ${CMAKE_INSTALL_LIBDIR}
+  )