From e9a7af12564a037615446a2ed17dac3c399ed01e Mon Sep 17 00:00:00 2001
From: Olivier Stasse <ostasse@laas.fr>
Date: Sat, 2 Nov 2019 12:35:47 +0800
Subject: [PATCH] [CMake] Fix switch to CMake export.

---
 CMakeLists.txt                   | 15 +++++++++------
 src/CMakeLists.txt               | 11 ++++++++++-
 src/dynamic_graph/CMakeLists.txt |  1 +
 unitTesting/CMakeLists.txt       |  9 ++++++---
 4 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4ff33ea..7da4ba9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,6 +10,12 @@ SET(PROJECT_URL "http://github.com/${PROJECT_NAMESPACE}/${PROJECT_NAME}")
 # Export CMake Target
 SET(PROJECT_USE_CMAKE_EXPORT TRUE)
 
+# Make sure that every header is generated in dynamic-graph
+SET(CUSTOM_HEADER_DIR "dynamic-graph/python")
+
+# Do not fail on warning
+SET(CXX_DISABLE_WERROR TRUE)
+
 INCLUDE(cmake/base.cmake)
 INCLUDE(cmake/boost.cmake)
 INCLUDE(cmake/eigen.cmake)
@@ -29,16 +35,13 @@ PROJECT(${PROJECT_NAME} CXX)
 FINDPYTHON()
 INCLUDE_DIRECTORIES(SYSTEM ${PYTHON_INCLUDE_DIRS})
 
-# Trigger dependency to dynamic-graph.
-ADD_REQUIRED_DEPENDENCY("dynamic-graph >= 3.0.0")
+ADD_REQUIRED_DEPENDENCY(eigen3)
+ADD_PROJECT_DEPENDENCY(dynamic-graph 3.0.0 REQUIRED)
 
-# Add dependency toward dynamic graph library in pkg-config file.
 PKG_CONFIG_APPEND_LIBS("dynamic-graph-python")
 
-# Search for Boost.
-SET(BOOST_COMPONENTS filesystem system thread program_options unit_test_framework)
+SET(BOOST_COMPONENTS filesystem system thread program_options unit_test_framework python)
 SEARCH_FOR_BOOST()
-SEARCH_FOR_EIGEN()
 
 ADD_SUBDIRECTORY(src)
 ADD_SUBDIRECTORY(include/${CUSTOM_HEADER_DIR})
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8313db5..37d1ff7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -9,6 +9,15 @@
 SET(LIBRARY_NAME ${PROJECT_NAME})
 ADD_LIBRARY(${LIBRARY_NAME} SHARED interpreter.cc dynamic_graph/python-compat.cc)
 
+TARGET_INCLUDE_DIRECTORIES(${LIBRARY_NAME}
+  PUBLIC
+  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
+  $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/../include>
+  $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/>
+  $<INSTALL_INTERFACE:include>
+)
+
 TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${PYTHON_LIBRARY})
 
 IF(UNIX)
@@ -16,7 +25,7 @@ IF(UNIX)
 ENDIF(UNIX)
 
 SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
-PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} dynamic-graph)
+TARGET_LINK_LIBRARIES(${LIBRARY_NAME} dynamic-graph::dynamic-graph)
 
 INSTALL(TARGETS ${LIBRARY_NAME}
   EXPORT ${TARGETS_EXPORT_NAME}
diff --git a/src/dynamic_graph/CMakeLists.txt b/src/dynamic_graph/CMakeLists.txt
index e7ad1ec..b085aef 100644
--- a/src/dynamic_graph/CMakeLists.txt
+++ b/src/dynamic_graph/CMakeLists.txt
@@ -18,6 +18,7 @@ ADD_LIBRARY(${PYTHON_MODULE}
     )
 
 TARGET_LINK_LIBRARIES(${PYTHON_MODULE} ${PYTHON_LIBRARY})
+TARGET_LINK_LIBRARIES(${PYTHON_MODULE} dynamic-graph::dynamic-graph)
 
 # Remove prefix lib
 SET_TARGET_PROPERTIES(${PYTHON_MODULE}
diff --git a/unitTesting/CMakeLists.txt b/unitTesting/CMakeLists.txt
index a8a5190..43c7480 100644
--- a/unitTesting/CMakeLists.txt
+++ b/unitTesting/CMakeLists.txt
@@ -1,4 +1,3 @@
-
 # Test the interpreter
 SET(EXECUTABLE_NAME interpreter-test)
 ADD_EXECUTABLE(${EXECUTABLE_NAME} interpreter-test.cc)
@@ -10,7 +9,7 @@ SET(EXECUTABLE_NAME interpreter-test-runfile)
 ADD_EXECUTABLE(${EXECUTABLE_NAME} interpreter-test-runfile.cc)
 TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} dynamic-graph-python)
 TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${PYTHON_LIBRARY})
-TARGET_LINK_BOOST_PYTHON(${EXECUTABLE_NAME})
+TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${Boost_LIBRARIES})
 ADD_TEST(${EXECUTABLE_NAME}  ${EXECUTABLE_NAME})
 
 ADD_CUSTOM_COMMAND(TARGET interpreter-test-runfile POST_BUILD
@@ -35,7 +34,11 @@ SET_TARGET_PROPERTIES(${LIBRARY_NAME}
   PREFIX ""
   SOVERSION ${PROJECT_VERSION}
   INSTALL_RPATH ${DYNAMIC_GRAPH_PLUGINDIR})
-PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} dynamic-graph)
+
+#add_dependencies(${LIBRARY_NAME} dynamic-graph)
+target_link_libraries(${LIBRARY_NAME} dynamic-graph::dynamic-graph)
+
+#PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} dynamic-graph)
 
 ## Create its bindings
 ## This mimics DYNAMIC_GRAPH_PYTHON_MODULE(${LIBRARY_NAME} ${LIBRARY_NAME} "${LIBRARY_NAME}-wrap")
-- 
GitLab