diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c7e690..4b391b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,12 +73,15 @@ set_package_properties(OpenGL PROPERTIES URL "http://opengl.org" PURPOSE "Used to render graphics in ompl_app.") set(OpenGL_GL_PREFERENCE GLVND) -find_package(OpenGL) +if (OMPLAPP_WITH_OPENGL) +find_package(OpenGL REQUIRED) +endif() set_package_properties(Python PROPERTIES URL "http://python.org" PURPOSE "Used for python bindings.") # This includes our own FindPython.cmake in ompl/CMakeModules. It defines, # among other things, the find_python_module() function used below. +if (OMPLAPP_WITH_PYTHON) find_package(Python) find_boost_python() @@ -105,55 +108,76 @@ find_python_module(OpenGL) if (NOT OPENGL_FOUND OR NOT PY_OPENGL) message(WARNING "Both OpenGL and the Python OpenGL module need to be installed to use the GUI") endif() +endif() set_package_properties(Eigen3 PROPERTIES URL "http://eigen.tuxfamily.org" PURPOSE "A linear algebra library used throughout OMPL.") -find_package(Eigen3 REQUIRED) +find_package(Eigen3 CONFIG REQUIRED) set_package_properties(Triangle PROPERTIES URL "http://www.cs.cmu.edu/~quake/triangle.html" PURPOSE "Used to create triangular decompositions of polygonal 2D environments.") +if (OMPLAPP_WITH_TRIANGLE) find_package(Triangle QUIET) +endif() set_package_properties(flann PROPERTIES URL "https://github.com/mariusmuja/flann" PURPOSE "If detetected, FLANN can be used for nearest neighbor queries by OMPL.") +if (OMPLAPP_WITH_FLANN) find_package(flann 1.8.3 QUIET) +endif() set_package_properties(spot PROPERTIES URL "http://spot.lrde.epita.fr" PURPOSE "Used for constructing finite automata from LTL formulae.") +if (OMPLAPP_WITH_SPOT) find_package(spot) +endif() set_package_properties(MORSE PROPERTIES URL "https://www.openrobots.org/wiki/morse" PURPOSE "OMPL includes a plugin for the MORSE Robot Simulation engine.") +if (OMPLAPP_WITH_MORSE) find_package(MORSE QUIET) +endif() set_package_properties(ODE PROPERTIES URL "http://ode.org" PURPOSE "The Open Dynamics Engine can be used as a \"black box\" for kinodynamic planning.") -find_package(ODE QUIET) +if (OMPLAPP_WITH_ODE) +find_package(ODE CONFIG REQUIRED) +set(ODE_LIBRARIES ODE::ODE) +endif() set_package_properties(Drawstuff PROPERTIES URL "http://ode.org" PURPOSE "Part of the ODE source distribution, used in one demo program.") +if (OMPLAPP_WITH_DRAWSTUFF) find_package(Drawstuff QUIET) +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) +find_package(assimp CONFIG REQUIRED) +set(ASSIMP_LIBRARIES assimp::assimp) set_package_properties(ccd PROPERTIES URL "https://github.com/danfis/libccd" PURPOSE "Collision detection library used by fcl.") -find_package(ccd REQUIRED) +find_package(ccd CONFIG REQUIRED) set_package_properties(fcl PROPERTIES URL "https://github.com/flexible-collision-library/fcl" PURPOSE "The default collision checking library.") +if (OMPLAPP_WITH_OCTOMAP) find_package(octomap QUIET) +endif() 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.") +if (OMPLAPP_WITH_THREADS) find_package(Threads QUIET) +endif() set_package_properties(Doxygen PROPERTIES URL "http://doxygen.org" PURPOSE "Used to create the OMPL documentation (i.e., http://ompl.kavrakilab.org).") +if (OMPLAPP_WITH_DOXYGEN) find_package(Doxygen) +endif() enable_testing() @@ -177,9 +201,7 @@ include_directories(SYSTEM "${Boost_INCLUDE_DIR}") include_directories( "${OMPLAPP_INCLUDE_DIRS}" "${OMPL_INCLUDE_DIRS}" - "${EIGEN3_INCLUDE_DIR}" - "${FCL_INCLUDE_DIRS}" - "${ASSIMP_INCLUDE_DIRS}") + "${FCL_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 @@ -242,12 +264,14 @@ endif() set_package_properties(PQP PROPERTIES URL "http://gamma.cs.unc.edu/SSV/" PURPOSE "Used as an alternative, additional collision checking library (the default is FCL).") +IF (OMPLAPP_WITH_PQP) find_package(PQP QUIET) if(PQP_FOUND) include_directories("${PQP_INCLUDE_DIR}") set(OMPLAPP_MODULE_LIBRARIES ${OMPLAPP_MODULE_LIBRARIES} ${PQP_LIBRARY}) set(OMPLAPP_LIBRARIES ${OMPLAPP_LIBRARIES} ${PQP_LIBRARY}) endif() +endif() add_subdirectory(ompl/doc) add_subdirectory(ompl/src)