Loading CMakeLists.txt +9 −40 Original line number Diff line number Diff line Loading @@ -5,7 +5,10 @@ cmake_minimum_required(VERSION 3.17) project(mpitest VERSION 1.0 LANGUAGES CXX) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) include(install.cmake) #implicit option(BUILD_TESTING "Build tests accompanying this project" ON) option(BUILD_SHARED_LIBS "Build using shared libraries" ON) find_package(MPI REQUIRED) Loading @@ -29,44 +32,10 @@ set_target_properties(mpiwrap PROPERTIES target_link_libraries(mpitest mpiwrap) ### Installation Instructions ### set(installable_bin mpitest) install(TARGETS ${installable_bin} DESTINATION bin) # Attach these libraries to the mpitestTargets list of exported libs. set(installable_libs mpiwrap) install(TARGETS ${installable_libs} DESTINATION lib EXPORT mpitestTargets) set(MPIWRAP_HEADERS include/mpiwrap.hh) install(FILES ${MPIWRAP_HEADERS} DESTINATION include) # Note: we choose the following location for cmake dependency info: # <prefix>/lib/cmake/mpitest/ # install the targets to export install(EXPORT mpitestTargets FILE mpitestTargets.cmake NAMESPACE mpitest:: DESTINATION lib/cmake/mpitest ) ### Testing Instructions ### include(CTest) add_subdirectory(tests) # Create a config helper so others can call find_package(mpitest::mpiwrap) include(CMakePackageConfigHelpers) configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/mpitestConfig.cmake" INSTALL_DESTINATION "lib/cmake/mpitest" NO_SET_AND_CHECK_MACRO ) # generate the version file for the config file write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/mpitestConfigVersion.cmake" VERSION "${mpitest_VERSION_MAJOR}.${mpitest_VERSION_MINOR}" COMPATIBILITY AnyNewerVersion ) # install the configuration file install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mpitestConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/mpitestConfigVersion.cmake DESTINATION lib/cmake/mpitest ) ### Installation Instructions ### install_bins(mpitest) install_libs(mpiwrap PKG mpiwrap HEADERS include/mpiwrap.hh) Config.cmake.in +2 −2 Original line number Diff line number Diff line @PACKAGE_INIT@ include ( "${CMAKE_CURRENT_LIST_DIR}/mpitestTargets.cmake" ) include ( "${CMAKE_CURRENT_LIST_DIR}/${INSTALL_LIB_PKG}Targets.cmake" ) find_dependency(MPI REQUIRED) check_required_components(mpitest) check_required_components(${INSTALL_LIB_PKG}) cmake/install.cmake 0 → 100644 +49 −0 Original line number Diff line number Diff line function(install_bins) set(targets ${ARGN}) install(TARGETS ${targets} DESTINATION bin) endfunction() # e.g. install_libs(mpiwrapper testhelpers PKG mpitest HEADERS include/a.h include/b.h) function(install_libs targets) set(oneValueArgs PKG) set(multiValueArgs HEADERS) cmake_parse_arguments(INSTALL_LIBS "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(targets INSTALL_LIBS_UNPARSED_ARGUMENTS) # Attach these libraries to the list of exported libs. install(TARGETS ${targets} DESTINATION lib EXPORT "${INSTALL_LIBS_PKG}Targets") install(FILES ${INSTALL_LIB_HEADERS} DESTINATION include) # Note: we choose the following location for cmake dependency info: # <prefix>/lib/cmake/${PKG}/ # install the targets to export install(EXPORT "${INSTALL_LIB_PKG}Targets" FILE "${INSTALL_LIB_PKG}Targets.cmake" NAMESPACE "${INSTALL_LIB_PKG}::" DESTINATION "lib/cmake/${INSTALL_LIB_PKG}" ) # Create a config helper so others can call find_package(${PKG}::${LIBNAME}) include(CMakePackageConfigHelpers) configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_LIB_PKG}Config.cmake" INSTALL_DESTINATION "lib/cmake/${INSTALL_LIB_PKG}" NO_SET_AND_CHECK_MACRO ) # generate the version file for the config file write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_LIB_PKG}ConfigVersion.cmake" VERSION "${${INSTALL_LIB_PKG}_VERSION_MAJOR}.${${INSTALL_LIB_PKG}_VERSION_MINOR}" COMPATIBILITY AnyNewerVersion ) # install the configuration file install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_LIB_PKG}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_LIB_PKG}ConfigVersion.cmake" DESTINATION "lib/cmake/${INSTALL_LIB_PKG}" ) endfunction() Loading
CMakeLists.txt +9 −40 Original line number Diff line number Diff line Loading @@ -5,7 +5,10 @@ cmake_minimum_required(VERSION 3.17) project(mpitest VERSION 1.0 LANGUAGES CXX) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake) include(install.cmake) #implicit option(BUILD_TESTING "Build tests accompanying this project" ON) option(BUILD_SHARED_LIBS "Build using shared libraries" ON) find_package(MPI REQUIRED) Loading @@ -29,44 +32,10 @@ set_target_properties(mpiwrap PROPERTIES target_link_libraries(mpitest mpiwrap) ### Installation Instructions ### set(installable_bin mpitest) install(TARGETS ${installable_bin} DESTINATION bin) # Attach these libraries to the mpitestTargets list of exported libs. set(installable_libs mpiwrap) install(TARGETS ${installable_libs} DESTINATION lib EXPORT mpitestTargets) set(MPIWRAP_HEADERS include/mpiwrap.hh) install(FILES ${MPIWRAP_HEADERS} DESTINATION include) # Note: we choose the following location for cmake dependency info: # <prefix>/lib/cmake/mpitest/ # install the targets to export install(EXPORT mpitestTargets FILE mpitestTargets.cmake NAMESPACE mpitest:: DESTINATION lib/cmake/mpitest ) ### Testing Instructions ### include(CTest) add_subdirectory(tests) # Create a config helper so others can call find_package(mpitest::mpiwrap) include(CMakePackageConfigHelpers) configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/mpitestConfig.cmake" INSTALL_DESTINATION "lib/cmake/mpitest" NO_SET_AND_CHECK_MACRO ) # generate the version file for the config file write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/mpitestConfigVersion.cmake" VERSION "${mpitest_VERSION_MAJOR}.${mpitest_VERSION_MINOR}" COMPATIBILITY AnyNewerVersion ) # install the configuration file install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mpitestConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/mpitestConfigVersion.cmake DESTINATION lib/cmake/mpitest ) ### Installation Instructions ### install_bins(mpitest) install_libs(mpiwrap PKG mpiwrap HEADERS include/mpiwrap.hh)
Config.cmake.in +2 −2 Original line number Diff line number Diff line @PACKAGE_INIT@ include ( "${CMAKE_CURRENT_LIST_DIR}/mpitestTargets.cmake" ) include ( "${CMAKE_CURRENT_LIST_DIR}/${INSTALL_LIB_PKG}Targets.cmake" ) find_dependency(MPI REQUIRED) check_required_components(mpitest) check_required_components(${INSTALL_LIB_PKG})
cmake/install.cmake 0 → 100644 +49 −0 Original line number Diff line number Diff line function(install_bins) set(targets ${ARGN}) install(TARGETS ${targets} DESTINATION bin) endfunction() # e.g. install_libs(mpiwrapper testhelpers PKG mpitest HEADERS include/a.h include/b.h) function(install_libs targets) set(oneValueArgs PKG) set(multiValueArgs HEADERS) cmake_parse_arguments(INSTALL_LIBS "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(targets INSTALL_LIBS_UNPARSED_ARGUMENTS) # Attach these libraries to the list of exported libs. install(TARGETS ${targets} DESTINATION lib EXPORT "${INSTALL_LIBS_PKG}Targets") install(FILES ${INSTALL_LIB_HEADERS} DESTINATION include) # Note: we choose the following location for cmake dependency info: # <prefix>/lib/cmake/${PKG}/ # install the targets to export install(EXPORT "${INSTALL_LIB_PKG}Targets" FILE "${INSTALL_LIB_PKG}Targets.cmake" NAMESPACE "${INSTALL_LIB_PKG}::" DESTINATION "lib/cmake/${INSTALL_LIB_PKG}" ) # Create a config helper so others can call find_package(${PKG}::${LIBNAME}) include(CMakePackageConfigHelpers) configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_LIB_PKG}Config.cmake" INSTALL_DESTINATION "lib/cmake/${INSTALL_LIB_PKG}" NO_SET_AND_CHECK_MACRO ) # generate the version file for the config file write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_LIB_PKG}ConfigVersion.cmake" VERSION "${${INSTALL_LIB_PKG}_VERSION_MAJOR}.${${INSTALL_LIB_PKG}_VERSION_MINOR}" COMPATIBILITY AnyNewerVersion ) # install the configuration file install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_LIB_PKG}Config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/${INSTALL_LIB_PKG}ConfigVersion.cmake" DESTINATION "lib/cmake/${INSTALL_LIB_PKG}" ) endfunction()