From e39c79fb45f9cc897c4c994c0b170a9f4401baf4 Mon Sep 17 00:00:00 2001
From: Sebastian Eibl <sebastian.eibl@mpcdf.mpg.de>
Date: Mon, 11 Jul 2022 10:47:44 +0200
Subject: [PATCH] reworked find_package

---
 02_find_package/CMakeLists.txt       | 10 +++++-----
 02_find_package/app/main.cpp         |  7 +++----
 02_find_package/cmake/FindMath.cmake | 28 ++++++++++++++--------------
 02_find_package/math/Makefile        |  2 ++
 02_find_package/math/include/add.hpp |  3 +++
 02_find_package/math/src/add.cpp     |  3 +++
 6 files changed, 30 insertions(+), 23 deletions(-)
 create mode 100644 02_find_package/math/Makefile
 create mode 100644 02_find_package/math/include/add.hpp
 create mode 100644 02_find_package/math/src/add.cpp

diff --git a/02_find_package/CMakeLists.txt b/02_find_package/CMakeLists.txt
index f268920..2e70eae 100644
--- a/02_find_package/CMakeLists.txt
+++ b/02_find_package/CMakeLists.txt
@@ -1,6 +1,6 @@
 cmake_minimum_required(VERSION 3.20)
 
-project(01_find_package
+project(02_find_package
         LANGUAGES CXX)
 
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
@@ -8,8 +8,8 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
 ##########################
 # EXECUTABLE
 ##########################
-find_package(Integrator REQUIRED)
+find_package(Math REQUIRED)
 
-add_executable(calc_pi)
-target_sources(calc_pi PRIVATE app/main.cpp)
-target_link_libraries(calc_pi PRIVATE Integrator::Integrator)
+add_executable(calculator)
+target_sources(calculator PRIVATE app/main.cpp)
+target_link_libraries(calculator PRIVATE Math::Math)
diff --git a/02_find_package/app/main.cpp b/02_find_package/app/main.cpp
index 2000da8..0295c87 100644
--- a/02_find_package/app/main.cpp
+++ b/02_find_package/app/main.cpp
@@ -1,9 +1,8 @@
-#include <integrator/mc_pi.hpp>
+#include <add.hpp>
 #include <iostream>
 
-int main(int argc, char** argv)
+int main(int /*argc*/, char** /*argv*/)
 {
-    if (argc != 2) exit(EXIT_FAILURE);
-    std::cout << calcPI(std::stoll(argv[1])) << std::endl;
+    std::cout << add(2, 3) << std::endl;
     exit(EXIT_SUCCESS);
 }
diff --git a/02_find_package/cmake/FindMath.cmake b/02_find_package/cmake/FindMath.cmake
index c7f303b..8234d3d 100644
--- a/02_find_package/cmake/FindMath.cmake
+++ b/02_find_package/cmake/FindMath.cmake
@@ -1,22 +1,22 @@
-find_path(Integrator_INCLUDE_DIR integrator/mc_pi.hpp)
-find_library(Integrator_LIBRARY Integrator)
+find_path(Math_INCLUDE_DIR add.hpp)
+find_library(Math_LIBRARY math)
 
 include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(Integrator DEFAULT_MSG
-        Integrator_INCLUDE_DIR Integrator_LIBRARY)
+find_package_handle_standard_args(Math DEFAULT_MSG
+        Math_INCLUDE_DIR Math_LIBRARY)
 
-if (Integrator_FOUND)
-    set(Integrator_LIBRARIES ${Integrator_LIBRARY})
-    set(Integrator_INCLUDE_DIRS ${Integrator_INCLUDE_DIR})
-    if (NOT TARGET Integrator::Integrator)
-        add_library(Integrator::Integrator UNKNOWN IMPORTED)
-        set_target_properties(Integrator::Integrator PROPERTIES
-                IMPORTED_LOCATION "${Integrator_LIBRARY}")
-        target_include_directories(Integrator::Integrator INTERFACE "${Integrator_INCLUDE_DIR}")
+if (Math_FOUND)
+    set(Math_LIBRARIES ${Math_LIBRARY})
+    set(Math_INCLUDE_DIRS ${Math_INCLUDE_DIR})
+    if (NOT TARGET Math::Math)
+        add_library(Math::Math UNKNOWN IMPORTED)
+        set_target_properties(Math::Math PROPERTIES
+                IMPORTED_LOCATION "${Math_LIBRARY}")
+        target_include_directories(Math::Math INTERFACE "${Math_INCLUDE_DIR}")
     endif ()
 endif ()
 
 mark_as_advanced(
-        Integrator_INCLUDE_DIR
-        Integrator_LIBRARY
+        Math_INCLUDE_DIR
+        Math_LIBRARY
 )
\ No newline at end of file
diff --git a/02_find_package/math/Makefile b/02_find_package/math/Makefile
new file mode 100644
index 0000000..ea4e8cc
--- /dev/null
+++ b/02_find_package/math/Makefile
@@ -0,0 +1,2 @@
+all:
+	$(CC) -shared -fPIC -Iinclude -o lib/libmath.so src/add.cpp
diff --git a/02_find_package/math/include/add.hpp b/02_find_package/math/include/add.hpp
new file mode 100644
index 0000000..46e67ab
--- /dev/null
+++ b/02_find_package/math/include/add.hpp
@@ -0,0 +1,3 @@
+#pragma once
+
+int add(const int lhs, const int rhs);
\ No newline at end of file
diff --git a/02_find_package/math/src/add.cpp b/02_find_package/math/src/add.cpp
new file mode 100644
index 0000000..ee7e742
--- /dev/null
+++ b/02_find_package/math/src/add.cpp
@@ -0,0 +1,3 @@
+#include "add.hpp"
+
+int add(const int lhs, const int rhs) { return lhs + rhs; }
\ No newline at end of file
-- 
GitLab