diff --git a/FullSimLight/MagneticField/CMakeLists.txt b/FullSimLight/MagneticField/CMakeLists.txt
index 4b047cc5e274eaa2b69d01e1f4f326d62a44c979..cdef14672706562a5adb8ef9b79d1abbe03df3aa 100644
--- a/FullSimLight/MagneticField/CMakeLists.txt
+++ b/FullSimLight/MagneticField/CMakeLists.txt
@@ -3,13 +3,10 @@ cmake_minimum_required( VERSION 3.1...3.19 )
 
 project( "MagneticField" VERSION ${GeoModel_VERSION} LANGUAGES CXX )
 
-# Set up the build of the three libraries of the project.
+# Set up the build of the libraries of the project's subpackages
 add_subdirectory(MagFieldInterfaces)
 add_subdirectory(MagFieldServices)
 
-install(EXPORT MagFieldInterfaces-export FILE MagneticField-MagFieldInterfaces.cmake DESTINATION lib/cmake/MagneticField)
-install(EXPORT MagFieldServices-export FILE MagneticField-MagFieldServices.cmake DESTINATION lib/cmake/MagneticField)
-install(FILES cmake/MagneticFieldConfig.cmake DESTINATION lib/cmake/MagneticField)
 
 # Install headers 
 file( GLOB HEADERS_Int MagFieldInterfaces/MagFieldInterfaces/*.h )
@@ -21,4 +18,28 @@ install( FILES ${HEADERS_Svc}
    DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/MagFieldServices
    COMPONENT Development )
 
+# install the CMake configuration files of the subpackages
+install(EXPORT MagFieldInterfaces-export FILE MagneticField-MagFieldInterfaces.cmake DESTINATION lib/cmake/MagneticField)
+install(EXPORT MagFieldServices-export FILE MagneticField-MagFieldServices.cmake DESTINATION lib/cmake/MagneticField)
+
+# Write and install the version file
+write_basic_config_version_file(
+   ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}ConfigVersion.cmake
+   VERSION ${PROJECT_VERSION}
+   COMPATIBILITY SameMajorVersion )
+install(
+   FILES
+   ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}ConfigVersion.cmake
+   COMPONENT Development
+   DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} )
+
+# Install the hand-written project configuration.
+configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MagneticFieldConfig.cmake.in
+   ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake
+   @ONLY )
+install(
+   FILES
+   ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake
+   COMPONENT Development
+   DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} )
 
diff --git a/FullSimLight/MagneticField/cmake/MagneticFieldConfig.cmake b/FullSimLight/MagneticField/cmake/MagneticFieldConfig.cmake
deleted file mode 100644
index b758ddbf5e9f0d00edbe43fc8f11704f2393ed96..0000000000000000000000000000000000000000
--- a/FullSimLight/MagneticField/cmake/MagneticFieldConfig.cmake
+++ /dev/null
@@ -1,5 +0,0 @@
-get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-
-include(${SELF_DIR}/MagneticField-MagFieldInterfaces.cmake)
-include(${SELF_DIR}/MagneticField-MagFieldServices.cmake)
-
diff --git a/FullSimLight/MagneticField/cmake/MagneticFieldConfig.cmake.in b/FullSimLight/MagneticField/cmake/MagneticFieldConfig.cmake.in
new file mode 100644
index 0000000000000000000000000000000000000000..994c1ba02f7ec13510fd16eb9625c6c9b06fb3ff
--- /dev/null
+++ b/FullSimLight/MagneticField/cmake/MagneticFieldConfig.cmake.in
@@ -0,0 +1,17 @@
+get_filename_component(SELF_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+
+include(${SELF_DIR}/MagneticField-MagFieldInterfaces.cmake)
+include(${SELF_DIR}/MagneticField-MagFieldServices.cmake)
+
+# Set the version of the installed project.
+set( MagneticField_VERSION "@PROJECT_VERSION@" )
+
+# Print some standard messages about the package being found.
+include( FindPackageHandleStandardArgs )
+find_package_handle_standard_args( MagneticField
+    FOUND_VAR MagneticField_FOUND
+   REQUIRED_VARS SELF_DIR
+   VERSION_VAR MagneticField_VERSION )
+
+# Clean up.
+unset( SELF_DIR )