From 6dab768c69a3d4ef93e25a763cc4402a37f82b24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Gr=C3=B3dek?= Date: Fri, 20 Dec 2019 14:09:37 +0100 Subject: [PATCH 1/3] Fix cmake complaining about missing FindPangolin.cmake which prevents building without Pangolin --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 34bdeb9..50c05d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ set(CMAKE_CXX_STANDARD 11) # Packages find_package(Eigen3 REQUIRED) -find_package(Pangolin) +find_package(Pangolin QUIET) if(Pangolin_FOUND) set(HAVE_PANGOLIN ON) set(DEPENDS_Pangolin "find_dependency(Pangolin)") From 3035d35aab831e57e6d8d53dcc80106b95e89143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Gr=C3=B3dek?= Date: Fri, 20 Dec 2019 14:16:11 +0100 Subject: [PATCH 2/3] Workaround for incorrect Eigen package export on some distros --- CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 50c05d1..d59d39e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,15 @@ set(CMAKE_BUILD_TYPE "Release") set(CMAKE_CXX_STANDARD 11) # Packages -find_package(Eigen3 REQUIRED) +find_package(Eigen3 REQUIRED NO_MODULE) +# below is a workaround for some buggy Eigen exports which managed to get into some distros +if(NOT TARGET Eigen3::Eigen) + message("Eigen has buggy exported package, but headers are found: ${EIGEN3_INCLUDE_DIRS}. Applying workaround.") + add_library(Eigen INTERFACE IMPORTED GLOBAL) + target_include_directories(Eigen INTERFACE "${EIGEN3_INCLUDE_DIRS}") + add_library(Eigen3::Eigen ALIAS Eigen) +endif() + find_package(Pangolin QUIET) if(Pangolin_FOUND) set(HAVE_PANGOLIN ON) From 5f43ec20aab1c5a1516bc2472ac1a820fb321355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Gr=C3=B3dek?= Date: Fri, 20 Dec 2019 14:43:33 +0100 Subject: [PATCH 3/3] Use Eigen target --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d59d39e..d495b30 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,8 +27,8 @@ find_package(OpenMP) # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") # endif() -set(OTHER_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIRS} ${Pangolin_INCLUDE_DIRS}) -set(OTHER_LIBRARIES ${EIGEN3_LIBRARIES} ${Pangolin_LIBRARIES}) +set(OTHER_INCLUDE_DIRS ${Pangolin_INCLUDE_DIRS}) +set(OTHER_LIBRARIES ${Pangolin_LIBRARIES}) if(_WIN_) option(BUILD_SHARED_LIBS "Build Shared Library" OFF) @@ -50,7 +50,7 @@ target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC ${OTHER_INCLUDE_DIRS}) target_include_directories(${PROJECT_NAME} PUBLIC $ $ $) -target_link_libraries(${PROJECT_NAME} PUBLIC ${OTHER_LIBRARIES}) +target_link_libraries(${PROJECT_NAME} PUBLIC ${OTHER_LIBRARIES} Eigen3::Eigen) if(OpenMP_CXX_FOUND) target_link_libraries(${PROJECT_NAME} PUBLIC OpenMP::OpenMP_CXX) set(DEPENDS_OpenMP "find_dependency(OpenMP)")