diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d1204e41..97629ed89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## FCL 0 -### FCL 0.7.0 (????-??-??) +### FCL 0.6.1 (2020-02-26) * Math @@ -13,6 +13,12 @@ convex distance: [#446](https://github.com/flexible-collision-library/fcl/pull/446) +* Build/Test/Misc + + * Clean up install config files and ensure find_dependency is called as + appropriate: + [#452](https://github.com/flexible-collision-library/fcl/pull/452) + ### FCL 0.6.0 (2020-02-10) * Core/Common diff --git a/CMakeLists.txt b/CMakeLists.txt index a5961de41..e90e56b2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,6 +73,7 @@ endif (MSVC OR MSVC90 OR MSVC10) set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") +include(CMakePackageConfigHelpers) include(GenerateExportHeader) include(GNUInstallDirs) include(CompilerSettings) @@ -264,6 +265,47 @@ else() message(STATUS "FCL does not use OctoMap (as requested)") endif() +if(TARGET ccd) + set(FIND_DEPENDENCY_CCD "find_dependency(ccd)") +else() + set(FIND_DEPENDENCY_CCD) +endif() + +if(TARGET Eigen3::Eigen) + set(FIND_DEPENDENCY_EIGEN3 "find_dependency(Eigen3)") +else() + set(FIND_DEPENDENCY_EIGEN3) +endif() + +if(TARGET octomap) + set(FIND_DEPENDENCY_OCTOMAP "find_dependency(octomap)") +else() + set(FIND_DEPENDENCY_OCTOMAP) +endif() + +if(WIN32 AND NOT CYGWIN) + set(FCL_INSTALL_CONFIGDIR CMake) +else() + set(FCL_INSTALL_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) +endif() + +configure_package_config_file(fcl-config.cmake.in fcl-config.cmake + INSTALL_DESTINATION ${FCL_INSTALL_CONFIGDIR} + PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR +) + +write_basic_package_version_file(fcl-config-version.cmake + VERSION ${FCL_VERSION} + COMPATIBILITY AnyNewerVersion +) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/fcl-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/fcl-config-version.cmake" + DESTINATION ${FCL_INSTALL_CONFIGDIR} + COMPONENT Development +) + # FCL's own include dir should be at the front of the include path include_directories(BEFORE "include") include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}/include") @@ -283,7 +325,10 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/fcl.pc" ) # Install catkin package.xml -install(FILES package.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}) +install(FILES package.xml + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME} + COMPONENT Development +) # Add uninstall target configure_file( diff --git a/fcl-config.cmake.in b/fcl-config.cmake.in new file mode 100644 index 000000000..0bc4fe040 --- /dev/null +++ b/fcl-config.cmake.in @@ -0,0 +1,20 @@ +# Generated by CMake @CMAKE_VERSION@ for @PROJECT_NAME@. + +@PACKAGE_INIT@ + +set(FCL_VERSION "@FCL_VERSION@") +set(FCL_ABI_VERSION "@FCL_ABI_VERSION@") + +set_and_check(FCL_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") +set(FCL_LIBRARIES @PROJECT_NAME@) +set_and_check(FCL_LIBRARY_DIRS "@PACKAGE_CMAKE_INSTALL_LIBDIR@") + +include(CMakeFindDependencyMacro) + +@FIND_DEPENDENCY_CCD@ +@FIND_DEPENDENCY_EIGEN3@ +@FIND_DEPENDENCY_OCTOMAP@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake") + +check_required_components(@PROJECT_NAME@) diff --git a/package.xml b/package.xml index 9605ebac2..15f1e3338 100644 --- a/package.xml +++ b/package.xml @@ -1,6 +1,6 @@ fcl - 0.6.0 + 0.6.1 FCL: the Flexible Collision Library TRI Geometry Team BSD diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 64b81e507..425724e78 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -112,23 +112,33 @@ endif() target_include_directories(${PROJECT_NAME} INTERFACE $ $ - $) + $) export(TARGETS ${PROJECT_NAME} - FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake") + FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake" +) + +if(CMAKE_VERSION VERSION_LESS 3.12) + set(NAMELINK_COMPONENT_OPTION) +else() + set(NAMELINK_COMPONENT_OPTION NAMELINK_COMPONENT Development) +endif() install(TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Config + EXPORT ${PROJECT_NAME}-targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + COMPONENT Development LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + COMPONENT Runtime ${NAMELINK_COMPONENT_OPTION} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT Runtime + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) -if(WIN32 AND NOT CYGWIN) - install(EXPORT ${PROJECT_NAME}Config DESTINATION CMake) -else() - install(EXPORT ${PROJECT_NAME}Config - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) -endif() +install(EXPORT ${PROJECT_NAME}-targets + DESTINATION ${FCL_INSTALL_CONFIGDIR} + COMPONENT Development +) # Setup the coveralls target and tell it to gather coverage data for all the lib sources. if(FCL_COVERALLS)