diff --git a/CMakeLists.txt b/CMakeLists.txt index b261b603d2361ae69c70600ff7f53812af022c11..049111a0050fff22a616b9a0abcc172e95a02797 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -76,4 +76,47 @@ endif() # installation # ------------------------------------------------------------------------------ -# TODO +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) + +# install library file (.a/.so) +install( + TARGETS evalhyd + EXPORT evalhyd-targets +) + +# install headers +install( + DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/evalhyd" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" + FILES_MATCHING PATTERN "*.hpp" +) + +# generate target file +export( + EXPORT evalhyd-targets + FILE "${CMAKE_CURRENT_BINARY_DIR}/EvalHydTargets.cmake" +) + +# install target file +install( + EXPORT evalhyd-targets + FILE "EvalHydTargets.cmake" + NAMESPACE EvalHyd:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/EvalHyd +) + +# generate config file +configure_package_config_file( + EvalHydConfig.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/EvalHydConfig.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/EvalHyd +) + +# install files +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/EvalHydConfig.cmake" + DESTINATION + "${CMAKE_INSTALL_LIBDIR}/cmake/EvalHyd" +) diff --git a/EvalHydConfig.cmake.in b/EvalHydConfig.cmake.in new file mode 100644 index 0000000000000000000000000000000000000000..ab97daed8af49db28f7fc159b741f6c3d641781f --- /dev/null +++ b/EvalHydConfig.cmake.in @@ -0,0 +1,10 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) + +# find public dependencies +find_dependency(xtensor @xtensor_VERSION@) + +if(NOT TARGET EvalHyd::evalhyd) + include("${CMAKE_CURRENT_LIST_DIR}/EvalHydTargets.cmake") +endif() diff --git a/README.md b/README.md index ec9c8ea2c94b0d1cdb819bbd0ce3c5a87c087cba..6108d5ec014cf07c14be3751894cbfa446f6be09 100644 --- a/README.md +++ b/README.md @@ -20,3 +20,9 @@ Run tests with: ```shell ./build/tests/evalhyd_tests ``` + +## How to install + +```shell +cmake --install build/ --prefix <path> +```