From 8386d669281e375d30901429b262f023c6f22802 Mon Sep 17 00:00:00 2001 From: Mederic Fourmy <mederic.fourmy@gmail.com> Date: Mon, 25 Apr 2022 17:40:42 +0200 Subject: [PATCH] wolf core compiling and installed without the need for sudo --- .gitignore | 2 +- CMakeLists.txt | 23 ++++++-------- test/CMakeLists.txt | 34 ++++---------------- test/gtest/CMakeLists.txt | 67 +++++---------------------------------- 4 files changed, 26 insertions(+), 100 deletions(-) diff --git a/.gitignore b/.gitignore index 77906100d..08224507c 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ README.txt bin/ build/ build_release/ +build_debug/ lib/ .idea/ ./Wolf.user @@ -30,7 +31,6 @@ src/CMakeFiles/cmake.check_cache src/examples/map_apriltag_save.yaml \.vscode/ -build_release/ .clangd wolfcore.found /wolf.found diff --git a/CMakeLists.txt b/CMakeLists.txt index c94b33bfb..20cd9418c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ MESSAGE(STATUS "Starting WOLF CMakeLists ...") # Pre-requisites about cmake itself -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +CMAKE_MINIMUM_REQUIRED(VERSION 3.16) if(COMMAND cmake_policy) cmake_policy(SET CMP0005 NEW) @@ -19,7 +19,6 @@ set(PLUGIN_NAME "wolf${PROJECT_NAME}") # Paths SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin) SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib) -SET(CMAKE_INSTALL_PREFIX /usr/local) SET(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY FALSE) # Build type @@ -91,7 +90,7 @@ FIND_PACKAGE(Eigen3 3.3 REQUIRED) if(${EIGEN3_VERSION_STRING} VERSION_LESS 3.3) message(FATAL_ERROR "Wolf requires Eigen >= 3.3. Found Eigen ${EIGEN3_VERSION_STRING}") endif() -FIND_PACKAGE(YamlCpp REQUIRED) +FIND_PACKAGE(yaml-cpp REQUIRED) # ============ config.h ============ set(_WOLF_ROOT_DIR ${CMAKE_SOURCE_DIR}) @@ -124,9 +123,6 @@ ENDIF (SPDLOG_INCLUDE_DIR) # ============ INCLUDES ============ INCLUDE_DIRECTORIES("include") # In this same project -INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIRS}) -INCLUDE_DIRECTORIES(${YAMLCPP_INCLUDE_DIR}) -INCLUDE_DIRECTORIES(${CERES_INCLUDE_DIRS}) # ============ HEADERS ============ SET(HDRS_CAPTURE include/core/capture/capture_base.h @@ -424,7 +420,8 @@ endif() #Link the created libraries #============================================================= TARGET_LINK_LIBRARIES(${PLUGIN_NAME} ${CMAKE_THREAD_LIBS_INIT} dl) -TARGET_LINK_LIBRARIES(${PLUGIN_NAME} ${YAMLCPP_LIBRARY}) +# TARGET_LINK_LIBRARIES(${PLUGIN_NAME} ${YAMLCPP_LIBRARY}) +TARGET_LINK_LIBRARIES(${PLUGIN_NAME} yaml-cpp) IF (Ceres_FOUND) TARGET_LINK_LIBRARIES(${PLUGIN_NAME} ${CERES_LIBRARIES}) ENDIF(Ceres_FOUND) @@ -500,14 +497,14 @@ INSTALL(FILES "${WOLF_CONFIG_DIR}/config.h" DESTINATION include/iri-algorithms/wolf/plugin_core/core/internal) #install Find*.cmake -configure_file("${CMAKE_SOURCE_DIR}/cmake_modules/${PLUGIN_NAME}Config.cmake" - "${CMAKE_BINARY_DIR}/${PLUGIN_NAME}Config.cmake" @ONLY) +# configure_file("${CMAKE_SOURCE_DIR}/cmake_modules/${PLUGIN_NAME}Config.cmake" +# "${CMAKE_BINARY_DIR}/${PLUGIN_NAME}Config.cmake" @ONLY) -configure_file("${CMAKE_SOURCE_DIR}/cmake_modules/FindYamlCpp.cmake" - "${CMAKE_BINARY_DIR}/FindYamlCpp.cmake" @ONLY) +# configure_file("${CMAKE_SOURCE_DIR}/cmake_modules/FindYamlCpp.cmake" +# "${CMAKE_BINARY_DIR}/FindYamlCpp.cmake" @ONLY) -INSTALL(FILES "${CMAKE_BINARY_DIR}/${PLUGIN_NAME}Config.cmake" DESTINATION "lib/cmake/${PLUGIN_NAME}") -INSTALL(FILES "${CMAKE_BINARY_DIR}/FindYamlCpp.cmake" DESTINATION "lib/cmake/${PLUGIN_NAME}") +# INSTALL(FILES "${CMAKE_BINARY_DIR}/${PLUGIN_NAME}Config.cmake" DESTINATION "lib/cmake/${PLUGIN_NAME}") +# INSTALL(FILES "${CMAKE_BINARY_DIR}/FindYamlCpp.cmake" DESTINATION "lib/cmake/${PLUGIN_NAME}") INSTALL(DIRECTORY ${SPDLOG_INCLUDE_DIRS} DESTINATION "include/iri-algorithms/") diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index dd7732c47..ac6b9ac6e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,28 +1,8 @@ # Retrieve googletest from github & compile add_subdirectory(gtest) - -## Added these two include_dirs: ###################### -# -#CMAKE modules -#SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake_modules") -#MESSAGE(STATUS ${CMAKE_MODULE_PATH}) -# -# Include Eigen -#FIND_PACKAGE(Eigen 3 REQUIRED) -#INCLUDE_DIRECTORIES(${EIGEN_INCLUDE_DIRS}) -# -# Include Ceres -#FIND_PACKAGE(Ceres QUIET) #Ceres is not required -#IF(Ceres_FOUND) -# INCLUDE_DIRECTORIES(${CERES_INCLUDE_DIRS}) -#ENDIF(Ceres_FOUND) -# -## and now gtest_motion_2d works ###################### - - -# Include gtest directory. -include_directories(${GTEST_INCLUDE_DIRS}) +# # Include gtest directory. +# include_directories(${GTEST_INCLUDE_DIRS}) ############# USE THIS TEST AS AN EXAMPLE ################# # # @@ -30,7 +10,7 @@ include_directories(${GTEST_INCLUDE_DIRS}) wolf_add_gtest(gtest_example gtest_example.cpp) # target_link_libraries(gtest_example ${PLUGIN_NAME}) # # # -########################################################### +########################################################## set(SRC_DUMMY dummy/processor_tracker_feature_dummy.cpp dummy/processor_tracker_landmark_dummy.cpp @@ -38,10 +18,10 @@ set(SRC_DUMMY ) add_library(dummy SHARED ${SRC_DUMMY}) target_link_libraries(dummy ${PLUGIN_NAME}) -################# ADD YOUR TESTS BELOW #################### -# # -# ==== IN ALPHABETICAL ORDER! ==== # -# # +################ ADD YOUR TESTS BELOW #################### +# # +# ==== IN ALPHABETICAL ORDER! ==== # +# # # ------- First Core classes ---------- diff --git a/test/gtest/CMakeLists.txt b/test/gtest/CMakeLists.txt index 559756b02..da1bee837 100644 --- a/test/gtest/CMakeLists.txt +++ b/test/gtest/CMakeLists.txt @@ -1,65 +1,14 @@ -cmake_minimum_required(VERSION 2.8.8) -project(gtest_builder C CXX) +include(FetchContent) +FetchContent_Declare( + googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG main) +FetchContent_MakeAvailable(googletest) -# We need thread support -#find_package(Threads REQUIRED) - -# Enable ExternalProject CMake module -include(ExternalProject) - -set(GTEST_FORCE_SHARED_CRT ON) -set(GTEST_DISABLE_PTHREADS OFF) - -# For some reason I need to disable PTHREADS -# with g++ (Ubuntu 4.9.3-8ubuntu2~14.04) 4.9.3 -# This is a known issue for MinGW : -# https://github.com/google/shaderc/pull/174 -#if(MINGW) - set(GTEST_DISABLE_PTHREADS ON) -#endif() - -# Download GoogleTest -ExternalProject_Add(googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG v1.8.x - # TIMEOUT 1 # We'll try this - CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs - -DCMAKE_CXX_FLAGS=${MSVC_COMPILER_DEFS} - -Dgtest_force_shared_crt=${GTEST_FORCE_SHARED_CRT} - -Dgtest_disable_pthreads=${GTEST_DISABLE_PTHREADS} - -DBUILD_GTEST=ON - PREFIX "${CMAKE_CURRENT_BINARY_DIR}" - # Disable install step - INSTALL_COMMAND "" - UPDATE_DISCONNECTED 1 # 1: do not update googletest; 0: update googletest via github -) - -# Get GTest source and binary directories from CMake project - -# Specify include dir -ExternalProject_Get_Property(googletest source_dir) -set(GTEST_INCLUDE_DIRS ${source_dir}/googletest/include PARENT_SCOPE) - -# Specify MainTest's link libraries -ExternalProject_Get_Property(googletest binary_dir) -set(GTEST_LIBS_DIR ${binary_dir}/googlemock/gtest PARENT_SCOPE) - -# Create a libgtest target to be used as a dependency by test programs -add_library(libgtest IMPORTED STATIC GLOBAL) -add_dependencies(libgtest googletest) - -# Set libgtest properties -set_target_properties(libgtest PROPERTIES - "IMPORTED_LOCATION" "${binary_dir}/googlemock/gtest/libgtest.a" - "IMPORTED_LINK_INTERFACE_LIBRARIES" "${CMAKE_THREAD_LIBS_INIT}" -) function(wolf_add_gtest target) add_executable(${target} ${ARGN}) - add_dependencies(${target} libgtest) - target_link_libraries(${target} libgtest) - - #WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin + target_link_libraries(${target} gtest_main) add_test(NAME ${target} COMMAND ${target}) endfunction() + -- GitLab