From e755a92daa52cb3005e0cf1d3b943a4ce466a409 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Joan=20Vallv=C3=A9=20Navarro?= <jvallve@iri.upc.edu>
Date: Tue, 17 May 2022 12:55:30 +0200
Subject: [PATCH] still debuging

---
 CMakeLists.txt            | 108 +++++++++++++++++++-------------------
 test/CMakeLists.txt       |  18 +------
 test/gtest/CMakeLists.txt |  13 +++--
 3 files changed, 64 insertions(+), 75 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index cdda9cb..6736c5e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,13 +4,14 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.10)
 # The project name and the type of project
 PROJECT(laser_scan_utils)
 
+# Paths
 SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin)
 SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib)
 set(INCLUDE_INSTALL_DIR include/iri-algorithms)
 set(LIB_INSTALL_DIR lib/)
 
+# Build type
 IF (NOT CMAKE_BUILD_TYPE)
-  #SET(CMAKE_BUILD_TYPE "DEBUG")
   SET(CMAKE_BUILD_TYPE "RELEASE")
 ENDIF (NOT CMAKE_BUILD_TYPE)
 message(STATUS "Configured to compile in ${CMAKE_BUILD_TYPE} mode.")
@@ -19,7 +20,34 @@ message(STATUS "Configured to compile in ${CMAKE_BUILD_TYPE} mode.")
 SET(CMAKE_CXX_FLAGS_DEBUG "-g -Wall -D_REENTRANT")
 SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -D_REENTRANT")
 
-#find dependencies
+#Set compiler according C++11 support
+include(CheckCXXCompilerFlag)
+CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
+if(COMPILER_SUPPORTS_CXX11)
+  message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has C++11 support.")
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+else()
+  message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
+endif()
+
+# Options
+IF(NOT BUILD_TESTS)
+  OPTION(BUILD_TESTS "Build Unit tests" ON)
+ENDIF(NOT BUILD_TESTS)
+
+IF(NOT BUILD_DEMOS)
+  OPTION(BUILD_DEMOS "Build demos" ON)
+ENDIF(NOT BUILD_DEMOS)
+
+if(BUILD_TESTS)
+    # Enables testing for this directory and below.
+    # Note that ctest expects to find a test file in the build directory root.
+    # Therefore, this command should be in the source directory root.
+    #include(CTest) # according to http://public.kitware.com/pipermail/cmake/2012-June/050853.html
+    enable_testing()
+endif()
+
+# ============ DEPENDENCIES ============ 
 FIND_PACKAGE(Eigen3 3.3 REQUIRED CONFIG)
 FIND_PACKAGE(falkolib QUIET)
 find_package(PkgConfig)
@@ -28,37 +56,16 @@ link_directories(${csm_LIBRARY_DIRS})
 message(csm_LIBRARY_DIRS: ${csm_LIBRARY_DIRS})
 # keep only the files in a lib folder: by default the "." is in csm_LIBRARY_DIRS, 
 # which is not acceptable for target_link_directories 
-string(REPLACE "./" "/" csm_LIBRARY_DIRS ${csm_LIBRARY_DIRS})
-# SET(csm_LIBRARY_DIRS_LENGTH "0")
-# list(LENGTH csm_LIBRARY_DIRS csm_LIBRARY_DIRS_LENGTH )
-message(csm_LIBRARY_DIRS: ${csm_LIBRARY_DIRS})
-# list(FILTER csm_LIBRARY_DIRS EXCLUDE REGEX ".")
-# message(csm_LIBRARY_DIRS: ${csm_LIBRARY_DIRS})
+foreach (my_entry IN LISTS csm_LIBRARY_DIRS)
+    message("csm_LIBRARY_DIRS has ${my_entry}")
+endforeach()
+list(FILTER csm_LIBRARY_DIRS INCLUDE REGEX "lib")
+foreach (my_entry IN LISTS csm_LIBRARY_DIRS)
+    message("csm_LIBRARY_DIRS has ${my_entry}")
+endforeach()
 
 
-#Build tests
-IF(NOT BUILD_TESTS)
-  OPTION(BUILD_TESTS "Build Unit tests" ON)
-ENDIF(NOT BUILD_TESTS)
 
-#Build demos
-IF(NOT BUILD_DEMOS)
-  OPTION(BUILD_DEMOS "Build demos" ON)
-ENDIF(NOT BUILD_DEMOS)
-
-#Set compiler according C++11 support
-include(CheckCXXCompilerFlag)
-CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
-CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
-if(COMPILER_SUPPORTS_CXX11)
-		message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has C++11 support.")
-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-elseif(COMPILER_SUPPORTS_CXX0X)
-		message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has C++0x support.")
-        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
-else()
-        message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
-endif()
 
 
 # ============ INCLUDES ============ 
@@ -152,12 +159,19 @@ ENDIF(falkolib_FOUND)
 
 
 #Build tests
-#===============EXAMPLE=========================
+#========================================
 IF(BUILD_DEMOS)
   MESSAGE("Building examples.")
   ADD_SUBDIRECTORY(examples)
 ENDIF(BUILD_DEMOS)
 
+#Build tests
+IF(BUILD_TESTS)
+  MESSAGE("Building tests.")
+  set(_LASER_SCAN_UTILS_ROOT_DIR ${CMAKE_SOURCE_DIR})
+  add_subdirectory(test)
+ENDIF(BUILD_TESTS)
+
 #install library
 #=============================================================
 INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
@@ -168,12 +182,6 @@ INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
 install(EXPORT ${PROJECT_NAME}Targets DESTINATION lib/${PROJECT_NAME}/cmake)
 
 
-#install headers
-INSTALL(FILES ${HDRS_BASE}
-      DESTINATION include/iri-algorithms/laser_scan_utils)
-INSTALL(FILES ${HDRS}
-      DESTINATION include/iri-algorithms/laser_scan_utils)
-
 # Configure the package installation
 include(CMakePackageConfigHelpers)
 configure_package_config_file(
@@ -192,25 +200,17 @@ install(
 
 # Specifies include directories to use when compiling the plugin target
 # This way, include_directories does not need to be called in plugins depending on this one
-# target_include_directories(${PROJECT_NAME} INTERFACE
-#   $<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
-# )
-target_include_directories(${PROJECT_NAME} PUBLIC  
-    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/laser_scan_utils>  
-    $<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
+target_include_directories(${PROJECT_NAME} INTERFACE
+  $<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
 )
 
-#Build tests
-IF(BUILD_TESTS)
-	# Enables testing for this directory and below.
-    # Note that ctest expects to find a test file in the build directory root.
-    # Therefore, this command should be in the source directory root.
-    #include(CTest) # according to http://public.kitware.com/pipermail/cmake/2012-June/050853.html
-  	MESSAGE("Building tests.")
-    enable_testing()
-    set(_LASER_SCAN_UTILS_ROOT_DIR ${CMAKE_SOURCE_DIR})
-  	add_subdirectory(test)
-ENDIF(BUILD_TESTS)
+#install headers
+INSTALL(FILES ${HDRS_BASE}
+      DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME})
+INSTALL(FILES ${HDRS}
+      DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME})
+
+export(PACKAGE ${PROJECT_NAME})
 
 FIND_PACKAGE(Doxygen MODULE)
 
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 7358d24..3234bd9 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -1,20 +1,10 @@
 # Retrieve googletest from github & compile
 add_subdirectory(gtest)
 
-#Include directories
-INCLUDE_DIRECTORIES(../src)
-INCLUDE_DIRECTORIES(/data)
-FIND_PACKAGE(Eigen3 3.3 REQUIRED CONFIG)
-FIND_PACKAGE(PythonLibs QUIET)
-INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES(${csm_INCLUDE_DIRS})
-INCLUDE_DIRECTORIES(${falkolib_INCLUDE_DIRS})
-
 ############# USE THIS TEST AS AN EXAMPLE ####################
 #                                                            #
 # Create a specific test executable for gtest_example        #
 # laser_scan_utils_add_gtest(gtest_example gtest_example.cpp)#
-# target_link_libraries(gtest_example ${PROJECT_NAME})       #
 #                                                            #
 ##############################################################
 
@@ -24,14 +14,8 @@ laser_scan_utils_add_gtest(gtest_example gtest_example.cpp)
 # gtest icp
 IF(csm_FOUND)
 	laser_scan_utils_add_gtest(gtest_icp gtest_icp.cpp)
-	IF(python_FOUND)
-		target_link_libraries(gtest_icp ${PROJECT_NAME} ${PYTHON_LIBRARIES})
-	ELSE(python_FOUND)
-		target_link_libraries(gtest_icp ${PROJECT_NAME})
-	ENDIF(python_FOUND)
 ENDIF(csm_FOUND)
 
 IF(falkolib_FOUND)
-	laser_scan_utils_add_gtest(gtest_loop_closure_falko gtest_loop_closure_falko.cpp ${PROJECT_SOURCE_DIR}/test/data)
-	target_link_libraries(gtest_loop_closure_falko ${PROJECT_NAME})
+	laser_scan_utils_add_gtest(gtest_loop_closure_falko gtest_loop_closure_falko.cpp)
 ENDIF(falkolib_FOUND)
\ No newline at end of file
diff --git a/test/gtest/CMakeLists.txt b/test/gtest/CMakeLists.txt
index cbcb594..22f0f7c 100644
--- a/test/gtest/CMakeLists.txt
+++ b/test/gtest/CMakeLists.txt
@@ -63,18 +63,23 @@ else()
     GIT_REPOSITORY https://github.com/google/googletest.git 
     GIT_TAG main)
 
-  FetchContent_MakeAvailable(googletest)
-    
+  #FetchContent_MakeAvailable(googletest)
+  FetchContent_GetProperties(googletest)
+  if(NOT googletest_POPULATED)
+    FetchContent_Populate(googletest)
+    add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL)
+  endif()
+
 endif()
   
 function(laser_scan_utils_add_gtest target)
   add_executable(${target} ${ARGN})
   if(${CMAKE_VERSION} VERSION_LESS "3.11.0") 
     add_dependencies(${target} libgtest)
-    target_link_libraries(${target} libgtest ${PLUGIN_NAME})
+    target_link_libraries(${target} PUBLIC libgtest ${PROJECT_NAME})
     target_include_directories(${target} PUBLIC ${GTEST_INCLUDE_DIRS})
   else()
-    target_link_libraries(${target} gtest_main ${PLUGIN_NAME})
+    target_link_libraries(${target} PUBLIC gtest_main ${PROJECT_NAME})
   endif()
   add_test(NAME ${target} COMMAND ${target})
 endfunction()
-- 
GitLab