From c062e0f4e9316446ced54d7246e286638e2c1572 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Sun, 1 Mar 2026 09:35:34 +0100 Subject: [PATCH] add musrfitConfig.cmake, etc. for musrfit. --- CMakeLists.txt | 29 +++++++++++++++++++ cmake/musrfitConfig.cmake.in | 15 ++++++++++ src/CMakeLists.txt | 6 +++- src/classes/CMakeLists.txt | 12 ++++---- .../Class_MuSR_PSI/CMakeLists.txt | 2 +- src/external/MusrRoot/CMakeLists.txt | 2 +- src/external/TLemRunHeader/CMakeLists.txt | 2 +- src/external/mud/src/CMakeLists.txt | 2 +- src/external/nexus/CMakeLists.txt | 4 +-- 9 files changed, 61 insertions(+), 13 deletions(-) create mode 100644 cmake/musrfitConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index fc6de2362..e48b4cdcb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -448,6 +448,35 @@ message("") message("-------------------------------------------------------------------------") message("") +#--- generate and install cmake package config files -------------------------- +include(CMakePackageConfigHelpers) + +configure_package_config_file( + ${CMAKE_SOURCE_DIR}/cmake/musrfitConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/musrfitConfig.cmake + INSTALL_DESTINATION lib/cmake/musrfit +) + +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/musrfitConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) + +install( + EXPORT musrfitTargets + FILE musrfitTargets.cmake + NAMESPACE musrfit:: + DESTINATION lib/cmake/musrfit +) + +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/musrfitConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/musrfitConfigVersion.cmake + DESTINATION lib/cmake/musrfit +) + #--- cpack specific info ...................................................... file(TO_NATIVE_PATH ${PROJECT_SOURCE_DIR} PROJECT_SOURCE_DIR_NATIVE) file(TO_NATIVE_PATH ${PROJECT_BINARY_DIR} PROJECT_BINARY_DIR_NATIVE) diff --git a/cmake/musrfitConfig.cmake.in b/cmake/musrfitConfig.cmake.in new file mode 100644 index 000000000..e51c361ad --- /dev/null +++ b/cmake/musrfitConfig.cmake.in @@ -0,0 +1,15 @@ +# musrfitConfig.cmake.in +# CMake package configuration template for musrfit. +# Generated by configure_package_config_file(). + +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) + +find_dependency(ROOT REQUIRED COMPONENTS Gui MathMore Minuit2 XMLParser) +find_dependency(Boost REQUIRED COMPONENTS filesystem) +find_dependency(GSL REQUIRED) + +include("${CMAKE_CURRENT_LIST_DIR}/musrfitTargets.cmake") + +check_required_components(musrfit) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d7cd7ea9f..2380329e9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -86,7 +86,11 @@ target_include_directories(musrfit $ $ ) -target_link_libraries(musrfit ${ROOT_LIBRARIES} ${MUSRFIT_LIBS}) +if (OpenMP_CXX_FOUND) + target_link_libraries(musrfit ${ROOT_LIBRARIES} ${MUSRFIT_LIBS} OpenMP::OpenMP_CXX) +else () + target_link_libraries(musrfit ${ROOT_LIBRARIES} ${MUSRFIT_LIBS}) +endif (OpenMP_CXX_FOUND) add_executable(musrFT musrFT.cpp) target_compile_options(musrFT BEFORE PRIVATE "-DHAVE_CONFIG_H" "${HAVE_GIT_REV_H}") diff --git a/src/classes/CMakeLists.txt b/src/classes/CMakeLists.txt index 57a072ed8..2688ded6d 100644 --- a/src/classes/CMakeLists.txt +++ b/src/classes/CMakeLists.txt @@ -201,18 +201,18 @@ if (OpenMP_FOUND) set(DependOnLibs ${DependOnLibs} OpenMP::OpenMP_CXX) endif (OpenMP_FOUND) -target_link_libraries(PUserFcnBase ${ROOT_LIBRARIES}) -target_link_libraries(PRgeHandler ${Boost_LIBRARIES} ${ROOT_LIBRARIES}) -target_link_libraries(PMusr ${Boost_LIBRARIES} ${DependOnLibs}) +target_link_libraries(PUserFcnBase PRIVATE ${ROOT_LIBRARIES}) +target_link_libraries(PRgeHandler PRIVATE ${Boost_LIBRARIES} ${ROOT_LIBRARIES}) +target_link_libraries(PMusr PRIVATE ${Boost_LIBRARIES} ${DependOnLibs}) #--- install PUserFcnBase solib ----------------------------------------------- -install(TARGETS PUserFcnBase DESTINATION lib) +install(TARGETS PUserFcnBase EXPORT musrfitTargets DESTINATION lib) #--- install PRgeHandler solib ----------------------------------------------- -install(TARGETS PRgeHandler DESTINATION lib) +install(TARGETS PRgeHandler EXPORT musrfitTargets DESTINATION lib) #--- install PMusr solib ------------------------------------------------------ -install(TARGETS PMusr DESTINATION lib) +install(TARGETS PMusr EXPORT musrfitTargets DESTINATION lib) #--- install root pcm's and rootmaps ------------------------------------------ install( diff --git a/src/external/MuSR_software/Class_MuSR_PSI/CMakeLists.txt b/src/external/MuSR_software/Class_MuSR_PSI/CMakeLists.txt index e3df5938d..e55201551 100644 --- a/src/external/MuSR_software/Class_MuSR_PSI/CMakeLists.txt +++ b/src/external/MuSR_software/Class_MuSR_PSI/CMakeLists.txt @@ -28,7 +28,7 @@ set_target_properties(Class_MuSR_PSI ) #--- install Class_MuSR_PSI solib --------------------------------------------- -install(TARGETS Class_MuSR_PSI DESTINATION lib) +install(TARGETS Class_MuSR_PSI EXPORT musrfitTargets DESTINATION lib) #--- install MuSR_td_PSI_bin header ------------------------------------------- install(FILES MuSR_td_PSI_bin.h DESTINATION include) diff --git a/src/external/MusrRoot/CMakeLists.txt b/src/external/MusrRoot/CMakeLists.txt index f6f457f6f..e772b9bb8 100644 --- a/src/external/MusrRoot/CMakeLists.txt +++ b/src/external/MusrRoot/CMakeLists.txt @@ -46,7 +46,7 @@ set_target_properties(TMusrRunHeader target_link_libraries(TMusrRunHeader ${ROOT_LIBRARIES}) #--- install TMusrRunHeader solib --------------------------------------------- -install(TARGETS TMusrRunHeader DESTINATION lib) +install(TARGETS TMusrRunHeader EXPORT musrfitTargets DESTINATION lib) #--- install root pcm's and rootmaps ------------------------------------------ install( diff --git a/src/external/TLemRunHeader/CMakeLists.txt b/src/external/TLemRunHeader/CMakeLists.txt index df5e99dac..fd5f7130c 100644 --- a/src/external/TLemRunHeader/CMakeLists.txt +++ b/src/external/TLemRunHeader/CMakeLists.txt @@ -57,7 +57,7 @@ target_include_directories( target_link_libraries(TLemRunHeader ${ROOT_LIBRARIES}) #--- install TLemRunHeader solib ---------------------------------------------- -install(TARGETS TLemRunHeader DESTINATION lib) +install(TARGETS TLemRunHeader EXPORT musrfitTargets DESTINATION lib) #--- install root pcm's and rootmaps ------------------------------------------ install( diff --git a/src/external/mud/src/CMakeLists.txt b/src/external/mud/src/CMakeLists.txt index 8dda07a24..267fcba78 100644 --- a/src/external/mud/src/CMakeLists.txt +++ b/src/external/mud/src/CMakeLists.txt @@ -27,7 +27,7 @@ set_target_properties(mud ) #--- install mud solib -------------------------------------------------------- -install(TARGETS mud DESTINATION lib) +install(TARGETS mud EXPORT musrfitTargets DESTINATION lib) #--- install mud header ------------------------------------------------------- install(FILES mud.h DESTINATION include) diff --git a/src/external/nexus/CMakeLists.txt b/src/external/nexus/CMakeLists.txt index ba6790bdc..46b7a320e 100644 --- a/src/external/nexus/CMakeLists.txt +++ b/src/external/nexus/CMakeLists.txt @@ -34,10 +34,10 @@ else (HAVE_HDF4) set(HDF_LIBS ${HDF5_LIBRARIES}) endif (HAVE_HDF4) message(STATUS "as35> HDF_LIBS: ${HDF_LIBS}") -target_link_libraries(PNeXus ${HDF_LIBS} ${ROOT_LIBRARIES}) +target_link_libraries(PNeXus PRIVATE ${HDF_LIBS} ${ROOT_LIBRARIES}) #--- install PNeXus solib ----------------------------------------------------- -install(TARGETS PNeXus DESTINATION lib) +install(TARGETS PNeXus EXPORT musrfitTargets DESTINATION lib) #--- install PNeXus header ---------------------------------------------------- install(FILES PNeXus.h DESTINATION include)