From d2a2eea4dc6f56db82a0239380bb7428ea315e8e Mon Sep 17 00:00:00 2001
From: Riccardo Maria Bianchi <riccardo.maria.bianchi@cern.ch>
Date: Mon, 13 Jun 2022 14:31:44 +0200
Subject: [PATCH] (cmake) Fix the targets export to also have proper version
 number

---
 FullSimLight/MagneticField/CMakeLists.txt     | 29 ++++++++++++++++---
 .../cmake/MagneticFieldConfig.cmake           |  5 ----
 .../cmake/MagneticFieldConfig.cmake.in        | 17 +++++++++++
 3 files changed, 42 insertions(+), 9 deletions(-)
 delete mode 100644 FullSimLight/MagneticField/cmake/MagneticFieldConfig.cmake
 create mode 100644 FullSimLight/MagneticField/cmake/MagneticFieldConfig.cmake.in

diff --git a/FullSimLight/MagneticField/CMakeLists.txt b/FullSimLight/MagneticField/CMakeLists.txt
index 4b047cc5e..cdef14672 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 b758ddbf5..000000000
--- 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 000000000..994c1ba02
--- /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 )
-- 
GitLab