From c0ad630740177b4f9b9fbb179140d1de8fc2452b 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 | 10 +++++-- 9 files changed, 67 insertions(+), 13 deletions(-) create mode 100644 cmake/musrfitConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 67654aa9..f5d7f1ea 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -476,6 +476,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 00000000..e51c361a --- /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 aa91bbf6..6b9923f9 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 37dbca83..233cf535 100644 --- a/src/classes/CMakeLists.txt +++ b/src/classes/CMakeLists.txt @@ -214,18 +214,18 @@ if (DKS_FOUND) set(DependOnLibs ${DependOnLibs} ${DKS_LIBRARY}) endif (DKS_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 e3df5938..e5520155 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 f6f457f6..e772b9bb 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 df5e99da..fd5f7130 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 8dda07a2..267fcba7 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 592576ab..e626de95 100644 --- a/src/external/nexus/CMakeLists.txt +++ b/src/external/nexus/CMakeLists.txt @@ -28,10 +28,16 @@ target_include_directories( ) #--- add library dependencies ------------------------------------------------- -target_link_libraries(PNeXus ${NEXUS_LIBRARY}) +if (HAVE_HDF4) + set(HDF_LIBS ${HDF4_LIBRARIES} ${HDF5_LIBRARIES}) +else (HAVE_HDF4) + set(HDF_LIBS ${HDF5_LIBRARIES}) +endif (HAVE_HDF4) +message(STATUS "as35> HDF_LIBS: ${HDF_LIBS}") +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)