Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

modernize cmake syntax #13

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 41 additions & 42 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)

Expand All @@ -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")
Expand Down Expand Up @@ -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$")
Expand Down Expand Up @@ -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).")
Expand All @@ -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}")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you want to just call target_link_libraries on ompl::ompl?


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)
Expand Down Expand Up @@ -268,7 +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}")
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)
Expand All @@ -293,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
Copy link
Contributor

@Ryanf55 Ryanf55 Sep 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will this conflict with the other export if someone installs both libraries into the same folder (a colcon user would share the install folder between multiple repos)? Usually, I've seen ${PROJECT_NAME}Export to prevent conflicts.

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"
Expand Down
9 changes: 0 additions & 9 deletions CMakeModules/Findccd.cmake

This file was deleted.

18 changes: 0 additions & 18 deletions CMakeModules/Findfcl.cmake

This file was deleted.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
target_link_libraries(ompl_benchmark ${OMPLAPP_LIBRARIES} ompl ompl_app_base Boost::program_options)
target_link_libraries(ompl_benchmark ompl::omplapp ompl ompl_app_base Boost::program_options)

If you can, try linking to an ALIAS targets for all of these. They don't all exist, but are easily created for the internal ones..

install(TARGETS ompl_benchmark
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
COMPONENT omplapp
Expand Down
2 changes: 1 addition & 1 deletion ompl
Submodule ompl updated 90 files
+0 −50 .appveyor.yml
+0 −1 .clang-format
+1 −0 .dockerignore
+26 −0 .github/workflows/before_all.sh
+73 −0 .github/workflows/before_build.sh
+68 −0 .github/workflows/build.yml
+65 −0 .github/workflows/wheels.yaml
+0 −62 .travis.yml
+17 −19 CMakeLists.txt
+8 −0 CMakeModules/FindTriangle.cmake
+19 −5 CMakeModules/Findcastxml.cmake
+0 −27 CMakeModules/Findflann.cmake
+10 −1 CMakeModules/Findspot.cmake
+6 −6 CMakeModules/OMPLUtils.cmake
+17 −2 CMakeModules/PythonBindingsUtils.cmake
+2 −2 CMakeModules/ompl.pc.in
+11 −4 README.md
+0 −9 TODO
+23 −12 demos/CMakeLists.txt
+3 −3 demos/constraint/ConstrainedPlanningCommon.py
+17 −10 doc/markdown/buildSystem.md
+1 −1 install-ompl-ubuntu.sh.in
+30 −53 omplConfig.cmake.in
+81 −7 py-bindings/generate_bindings.py
+1 −1 py-bindings/headers_base.txt
+2 −2 py-bindings/headers_geometric.txt
+8 −0 py-bindings/ompl_py_tools.h
+21 −0 py-bindings/pyproject.toml
+163 −8 py-bindings/setup.py
+11 −7 scripts/docker/ompl.Dockerfile
+6 −0 src/CMakeLists.txt
+17 −20 src/ompl/CMakeLists.txt
+45 −43 src/ompl/base/OptimizationObjective.h
+1 −1 src/ompl/base/samplers/informed/src/RejectionInfSampler.cpp
+0 −3 src/ompl/base/spaces/DubinsStateSpace.h
+2 −2 src/ompl/base/spaces/src/DubinsStateSpace.cpp
+37 −32 src/ompl/base/src/OptimizationObjective.cpp
+0 −3 src/ompl/config.h.in
+13 −1 src/ompl/control/planners/est/src/EST.cpp
+1 −1 src/ompl/control/planners/kpiece/src/KPIECE1.cpp
+12 −0 src/ompl/control/planners/pdst/src/PDST.cpp
+14 −2 src/ompl/control/planners/rrt/src/RRT.cpp
+13 −1 src/ompl/control/planners/sst/src/SST.cpp
+92 −48 src/ompl/geometric/PathSimplifier.h
+63 −35 src/ompl/geometric/planners/AnytimePathShortening.cpp
+9 −0 src/ompl/geometric/planners/AnytimePathShortening.h
+1 −1 src/ompl/geometric/planners/est/EST.h
+3 −1 src/ompl/geometric/planners/est/src/BiEST.cpp
+13 −1 src/ompl/geometric/planners/est/src/EST.cpp
+13 −1 src/ompl/geometric/planners/est/src/ProjEST.cpp
+6 −0 src/ompl/geometric/planners/fmt/src/FMT.cpp
+3 −1 src/ompl/geometric/planners/kpiece/src/BKPIECE1.cpp
+7 −1 src/ompl/geometric/planners/kpiece/src/KPIECE1.cpp
+3 −1 src/ompl/geometric/planners/kpiece/src/LBKPIECE1.cpp
+12 −0 src/ompl/geometric/planners/pdst/src/PDST.cpp
+27 −19 src/ompl/geometric/planners/prm/src/PRM.cpp
+33 −33 src/ompl/geometric/planners/prm/src/SPARStwo.cpp
+3 −1 src/ompl/geometric/planners/rlrt/src/BiRLRT.cpp
+14 −2 src/ompl/geometric/planners/rlrt/src/RLRT.cpp
+2 −2 src/ompl/geometric/planners/rrt/src/BiTRRT.cpp
+13 −1 src/ompl/geometric/planners/rrt/src/LBTRRT.cpp
+8 −2 src/ompl/geometric/planners/rrt/src/LazyLBTRRT.cpp
+13 −1 src/ompl/geometric/planners/rrt/src/LazyRRT.cpp
+13 −1 src/ompl/geometric/planners/rrt/src/RRT.cpp
+3 −1 src/ompl/geometric/planners/rrt/src/RRTConnect.cpp
+14 −2 src/ompl/geometric/planners/rrt/src/RRTXstatic.cpp
+13 −1 src/ompl/geometric/planners/rrt/src/RRTstar.cpp
+15 −3 src/ompl/geometric/planners/rrt/src/TRRT.cpp
+14 −2 src/ompl/geometric/planners/rrt/src/TSRRT.cpp
+14 −2 src/ompl/geometric/planners/rrt/src/VFRRT.cpp
+1 −1 src/ompl/geometric/planners/rrt/src/pRRT.cpp
+4 −2 src/ompl/geometric/planners/sbl/src/SBL.cpp
+5 −2 src/ompl/geometric/planners/sbl/src/pSBL.cpp
+13 −1 src/ompl/geometric/planners/sst/src/SST.cpp
+13 −1 src/ompl/geometric/planners/stride/src/STRIDE.cpp
+115 −7 src/ompl/geometric/src/PathSimplifier.cpp
+1 −1 src/ompl/multilevel/datastructures/BundleSpaceSequenceImpl.h
+13 −0 src/ompl/tools/lightning/src/Lightning.cpp
+14 −19 src/ompl/tools/thunder/src/SPARSdb.cpp
+14 −1 src/ompl/tools/thunder/src/Thunder.cpp
+0 −1 src/ompl/util/RandomNumbers.h
+14 −6 tests/CMakeLists.txt
+18 −18 tests/base/ptc.cpp
+6 −0 tests/cmake_export/CMakeLists.txt
+13 −0 tests/cmake_export/README.md
+5 −0 tests/cmake_export/main.cpp
+54 −58 tests/geometric/2d/2DmapSetup.h
+88 −133 tests/geometric/2d/2denvs.cpp
+38 −42 tests/geometric/2d/2dpath_simplifying.cpp
+15 −0 vcpkg.json
3 changes: 0 additions & 3 deletions src/omplapp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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 "$<TARGET_FILE:${_target}>"
Expand Down