From 447791791e8153bb72e2a4200da71fc54372e5e4 Mon Sep 17 00:00:00 2001 From: Mark Moll Date: Fri, 1 Dec 2023 16:44:50 -0600 Subject: [PATCH 1/2] make corresponding cmake changes for FLANN and Spot as in https://github.com/ompl/ompl/pull/1067 --- CMakeLists.txt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 685f1f38..915decda 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,7 +116,7 @@ find_package(Triangle QUIET) set_package_properties(flann PROPERTIES URL "https://github.com/mariusmuja/flann" PURPOSE "If detetected, FLANN can be used for nearest neighbor queries by OMPL.") -find_package(flann 1.8.3 QUIET) +find_package(flann CONFIG 1.9.2 QUIET) set_package_properties(spot PROPERTIES URL "http://spot.lrde.epita.fr" PURPOSE "Used for constructing finite automata from LTL formulae.") @@ -198,14 +198,10 @@ endif() if (flann_FOUND) set(OMPL_HAVE_FLANN 1) - include_directories("${FLANN_INCLUDE_DIRS}") - link_directories(${FLANN_LIBRARY_DIRS}) endif() if (spot_FOUND) set(OMPL_HAVE_SPOT 1) - include_directories("${SPOT_INCLUDE_DIRS}") - link_directories(${SPOT_LIBRARY_DIRS}) endif() # Numpy is used to convert Eigen matrices/vectors to numpy arrays From 11d8a8b14e37518dffb145e35309ae876ba442bb Mon Sep 17 00:00:00 2001 From: Mark Moll Date: Sat, 7 Sep 2024 17:25:23 -0700 Subject: [PATCH 2/2] modernize cmake syntax --- CMakeLists.txt | 86 ++++++++++++++++++-------------------- CMakeModules/Findccd.cmake | 9 ---- CMakeModules/Findfcl.cmake | 18 -------- README.md | 2 +- benchmark/CMakeLists.txt | 2 +- ompl | 2 +- src/omplapp/CMakeLists.txt | 3 -- 7 files changed, 44 insertions(+), 78 deletions(-) delete mode 100644 CMakeModules/Findccd.cmake delete mode 100644 CMakeModules/Findfcl.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 915decda..4dfcc7e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.12) project(omplapp VERSION 1.6.0 LANGUAGES CXX) set(OMPL_ABI_VERSION 17) @@ -15,8 +15,7 @@ endif() message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") -set(CMAKE_MODULE_PATH - "${CMAKE_MODULE_PATH}" +list(APPEND CMAKE_MODULE_PATH "${CMAKE_ROOT_DIR}/cmake/Modules" "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" "${CMAKE_CURRENT_SOURCE_DIR}/ompl/CMakeModules") @@ -49,8 +48,7 @@ set_package_properties(Boost PROPERTIES URL "http://boost.org" PURPOSE "Used throughout OMPL for data serialization, graphs, etc.") set(Boost_USE_MULTITHREADED ON) -set(Boost_NO_BOOST_CMAKE ON) -find_package(Boost 1.58 QUIET REQUIRED COMPONENTS serialization filesystem system program_options) +find_package(Boost 1.58 REQUIRED COMPONENTS serialization filesystem system program_options) # on macOS we need to check whether to use libc++ or libstdc++ with clang++ if(CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?Clang$") @@ -113,31 +111,39 @@ set_package_properties(Triangle PROPERTIES URL "http://www.cs.cmu.edu/~quake/triangle.html" PURPOSE "Used to create triangular decompositions of polygonal 2D environments.") find_package(Triangle QUIET) +set(OMPL_EXTENSION_TRIANGLE ${TRIANGLE_FOUND}) + set_package_properties(flann PROPERTIES URL "https://github.com/mariusmuja/flann" PURPOSE "If detetected, FLANN can be used for nearest neighbor queries by OMPL.") find_package(flann CONFIG 1.9.2 QUIET) +if (flann_FOUND) + set(OMPL_HAVE_FLANN 1) +endif() + set_package_properties(spot PROPERTIES URL "http://spot.lrde.epita.fr" PURPOSE "Used for constructing finite automata from LTL formulae.") find_package(spot) +if (spot_FOUND) + set(OMPL_HAVE_SPOT 1) +endif() + set_package_properties(assimp PROPERTIES URL "http://assimp.org" PURPOSE "Used in ompl_app for reading meshes representing robots and environments.") find_package(assimp REQUIRED) -set_package_properties(ccd PROPERTIES - URL "https://github.com/danfis/libccd" - PURPOSE "Collision detection library used by fcl.") -find_package(ccd REQUIRED) + set_package_properties(fcl PROPERTIES URL "https://github.com/flexible-collision-library/fcl" PURPOSE "The default collision checking library.") -find_package(octomap QUIET) find_package(fcl REQUIRED) + set_package_properties(Threads PROPERTIES URL "https://en.wikipedia.org/wiki/POSIX_Threads" PURPOSE "Pthreads is sometimes needed, depending on OS / compiler.") find_package(Threads QUIET) + set_package_properties(Doxygen PROPERTIES URL "http://doxygen.org" PURPOSE "Used to create the OMPL documentation (i.e., http://ompl.kavrakilab.org).") @@ -161,49 +167,23 @@ if(Boost_VERSION_STRING VERSION_LESS "1.63.0") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/ompl/src/external") endif() -include_directories(SYSTEM "${Boost_INCLUDE_DIR}") include_directories( "${OMPLAPP_INCLUDE_DIRS}" - "${OMPL_INCLUDE_DIRS}" - "${EIGEN3_INCLUDE_DIR}" - "${FCL_INCLUDE_DIRS}" - "${ASSIMP_INCLUDE_DIRS}") - -# ROS installs fcl in /usr. In /usr/include/fcl/config.h it says octomap was -# enabled. Octomap is installed in /opt/ros/${ROS_DISTRO}/include (most -# likely), but fcl.pc doesn't have that information, so we just add it to the -# include path. -if(DEFINED ENV{ROS_DISTRO}) - include_directories("/opt/ros/$ENV{ROS_DISTRO}/include") -endif() + "${OMPL_INCLUDE_DIRS}") set(OMPLAPP_MODULE_LIBRARIES ${OPENGL_LIBRARIES} - ${ASSIMP_LIBRARY} - ${FCL_LIBRARIES}) + assimp::assimp + fcl::fcl) set(OMPLAPP_LIBRARIES ${OPENGL_LIBRARIES} - ${ASSIMP_LIBRARIES} - ${FCL_LIBRARIES}) -link_directories(${ASSIMP_LIBRARY_DIRS} ${CCD_LIBRARY_DIRS} ${OCTOMAP_LIBRARY_DIRS} ${FCL_LIBRARY_DIRS}) + assimp::assimp + fcl) if (OPENGL_INCLUDE_DIR) include_directories("${OPENGL_INCLUDE_DIR}") endif() -set(OMPL_EXTENSION_TRIANGLE ${TRIANGLE_FOUND}) -if (OMPL_EXTENSION_TRIANGLE) - include_directories(${TRIANGLE_INCLUDE_DIR}) -endif() - -if (flann_FOUND) - set(OMPL_HAVE_FLANN 1) -endif() - -if (spot_FOUND) - set(OMPL_HAVE_SPOT 1) -endif() - # Numpy is used to convert Eigen matrices/vectors to numpy arrays if(PYTHON_FOUND AND NOT Boost_VERSION_STRING VERSION_LESS "1.63.0") find_python_module(numpy) @@ -268,10 +248,7 @@ if(OPENGL_FOUND AND NOT MSVC) target_link_flags(ompl ompl_app_base ompl_app) set(PKG_NAME "ompl") set(PKG_DESC "The Open Motion Planning Library") - set(PKG_EXTERNAL_DEPS "eigen3 ${ompl_PKG_DEPS}") - if(OMPL_EXTENSION_ODE) - set(PKG_EXTERNAL_DEPS "${PKG_EXTERNAL_DEPS}") - endif() + set(PKG_EXTERNAL_DEPS "${ompl_PKG_DEPS}") set(PKG_OMPL_LIBS "-lompl -lompl_app_base -lompl_app ${ompl_LINK_FLAGS}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ompl/CMakeModules/ompl.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/ompl.pc" @ONLY) @@ -296,6 +273,25 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/omplConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/omplConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/ompl/cmake COMPONENT ompl) +install(TARGETS ompl + EXPORT omplExport + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT ompl) +install(TARGETS ompl_app_base + EXPORT omplExport + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT omplapp) +if(TARGET ompl_app) + install(TARGETS ompl_app + EXPORT omplExport + DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT omplapp) +endif() +install(EXPORT omplExport + NAMESPACE ompl:: + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/ompl/cmake) +export(EXPORT omplExport + FILE "${CMAKE_CURRENT_BINARY_DIR}/omplExport.cmake") # script to install ompl on Ubuntu configure_file("${CMAKE_CURRENT_SOURCE_DIR}/ompl/install-ompl-ubuntu.sh.in" diff --git a/CMakeModules/Findccd.cmake b/CMakeModules/Findccd.cmake deleted file mode 100644 index 21a6bf20..00000000 --- a/CMakeModules/Findccd.cmake +++ /dev/null @@ -1,9 +0,0 @@ -include(FindPackageHandleStandardArgs) -find_package(PkgConfig) -if(PKGCONFIG_FOUND) - pkg_check_modules(CCD ccd>=2.0) - if(CCD_LIBRARIES AND NOT CCD_INCLUDE_DIRS) - set(CCD_INCLUDE_DIRS "/usr/include") - endif() -endif() -find_package_handle_standard_args(ccd DEFAULT_MSG CCD_LIBRARIES CCD_INCLUDE_DIRS) diff --git a/CMakeModules/Findfcl.cmake b/CMakeModules/Findfcl.cmake deleted file mode 100644 index f7961c29..00000000 --- a/CMakeModules/Findfcl.cmake +++ /dev/null @@ -1,18 +0,0 @@ -include(FindPackageHandleStandardArgs) - -# vcpkg and MacPorts install cmake config files for fcl -find_package(fcl QUIET CONFIG) -if(TARGET fcl) - get_target_property(FCL_INCLUDE_DIRS fcl INTERFACE_INCLUDE_DIRECTORIES) - set(FCL_LIBRARIES "fcl") -else() - find_package(PkgConfig) - if(PKGCONFIG_FOUND) - pkg_check_modules(FCL fcl>=0.3.1) - if(FCL_LIBRARIES AND NOT FCL_INCLUDE_DIRS) - set(FCL_INCLUDE_DIRS "/usr/include") - endif() - endif() -endif() - -find_package_handle_standard_args(fcl DEFAULT_MSG FCL_LIBRARIES FCL_INCLUDE_DIRS) diff --git a/README.md b/README.md index 71fd6676..770eeea8 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ detailed installation instructions. OMPL.app has the following required dependencies: * [Boost](https://www.boost.org) (version 1.58 or higher) -* [CMake](https://www.cmake.org) (version 3.5 or higher) +* [CMake](https://www.cmake.org) (version 3.12 or higher) * [Eigen](http://eigen.tuxfamily.org) (version 3.3 or higher) * [Assimp](http://assimp.org) (version 3.0.1270 or higher) * [FCL](https://github.com/flexible-collision-library/fcl) (version 0.3.1 or higher) diff --git a/benchmark/CMakeLists.txt b/benchmark/CMakeLists.txt index 7da2b7f5..1c7b0136 100644 --- a/benchmark/CMakeLists.txt +++ b/benchmark/CMakeLists.txt @@ -1,6 +1,6 @@ add_executable(ompl_benchmark CFGBenchmark.cpp BenchmarkOptions.cpp BenchmarkTypes.cpp benchmark.cpp) -target_link_libraries(ompl_benchmark ${OMPLAPP_LIBRARIES} ompl ompl_app_base ${Boost_PROGRAM_OPTIONS_LIBRARY}) +target_link_libraries(ompl_benchmark ${OMPLAPP_LIBRARIES} ompl ompl_app_base Boost::program_options) install(TARGETS ompl_benchmark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT omplapp diff --git a/ompl b/ompl index 1aed811a..af4d6d62 160000 --- a/ompl +++ b/ompl @@ -1 +1 @@ -Subproject commit 1aed811a0f23023246c576338aab1d45d2ebc517 +Subproject commit af4d6d625e15a4ed6d85255c718ce26bcd79e4cc diff --git a/src/omplapp/CMakeLists.txt b/src/omplapp/CMakeLists.txt index 2d0c8e5c..951bb321 100644 --- a/src/omplapp/CMakeLists.txt +++ b/src/omplapp/CMakeLists.txt @@ -38,9 +38,6 @@ foreach(_target ${OMPLAPP_TARGETS}) set_target_properties(${_target} PROPERTIES VERSION "${PROJECT_VERSION}" SOVERSION "${OMPL_ABI_VERSION}") endif(WIN32) - install(TARGETS ${_target} - DESTINATION ${CMAKE_INSTALL_LIBDIR} - COMPONENT omplapp) if(NOT MSVC) add_custom_command(TARGET ${_target} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "$"