From fa6d19125c5b1f43f30eb84ffdf29c5195ca1362 Mon Sep 17 00:00:00 2001
From: Thibault Hallouin <thibault.hallouin@inrae.fr>
Date: Tue, 13 Dec 2022 11:09:47 +0100
Subject: [PATCH] add installation instructions with CMake

---
 CMakeLists.txt         | 45 +++++++++++++++++++++++++++++++++++++++++-
 EvalHydConfig.cmake.in | 10 ++++++++++
 README.md              |  6 ++++++
 3 files changed, 60 insertions(+), 1 deletion(-)
 create mode 100644 EvalHydConfig.cmake.in

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b261b60..049111a 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 0000000..ab97dae
--- /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 ec9c8ea..6108d5e 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>
+```
-- 
GitLab