From d6e151bc91ce6ad0f162d8dbe607951c13a29181 Mon Sep 17 00:00:00 2001 From: isucan <isucan@253336fb-580f-4252-a368-f3cef5a2a82b> Date: Fri, 24 Aug 2012 08:02:20 +0000 Subject: [PATCH] fixes for build system; add version, linking to boost, looking for octomap using pkg config git-svn-id: https://kforge.ros.org/fcl/fcl_ros@172 253336fb-580f-4252-a368-f3cef5a2a82b --- trunk/fcl/CMakeLists.txt | 28 +++++++----- trunk/fcl/CMakeModules/FCLCheckOctomap.cmake | 45 -------------------- trunk/fcl/CMakeModules/FCLVersion.cmake | 8 ++++ trunk/fcl/include/fcl/config.h.in | 4 ++ trunk/fcl/src/CMakeLists.txt | 2 +- 5 files changed, 30 insertions(+), 57 deletions(-) delete mode 100644 trunk/fcl/CMakeModules/FCLCheckOctomap.cmake create mode 100644 trunk/fcl/CMakeModules/FCLVersion.cmake diff --git a/trunk/fcl/CMakeLists.txt b/trunk/fcl/CMakeLists.txt index 6b6060ff..e64d1a6d 100644 --- a/trunk/fcl/CMakeLists.txt +++ b/trunk/fcl/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.4.6) +cmake_minimum_required(VERSION 2.8) project(fcl CXX C) # Set the build type. Options are: @@ -9,9 +9,10 @@ project(fcl CXX C) # MinSizeRel : w/o debug symbols, w/ optimization, stripped binaries set(CMAKE_BUILD_TYPE Release) -set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) +set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") +include(FCLVersion) # Check for SSE flags set(FCL_HAVE_SSE 0) @@ -26,22 +27,28 @@ else() message(STATUS "FCL does not use SSE") endif() -# Check for Octomap flags +# Find Octomap (optional) +find_package(PkgConfig REQUIRED) set(FCL_HAVE_OCTOMAP 0) -include(FCLCheckOctomap) -fcl_check_for_octomap() -if (OCTOMAP_FLAGS) - message(STATUS "FCL uses octomap") - add_definitions(${OCTOMAP_FLAGS}) +pkg_check_modules(OCTOMAP QUIET octomap) +if (OCTOMAP_INCLUDE_DIRS) + include_directories(${OCTOMAP_INCLUDE_DIRS}) + link_directories(${OCTOMAP_LIBRARY_DIRS}) set(FCL_HAVE_OCTOMAP 1) + message(STATUS "FCL uses Octomap") else() - message(STATUS "FCL does not use octomap") + message(STATUS "FCL does not use Octomap") +endif() + +if(MSVC OR MSVC90 OR MSVC10) + add_definitions(-DBOOST_ALL_NO_LIB) endif() +find_package(Boost COMPONENTS thread REQUIRED) +include_directories(${Boost_INCLUDE_DIR}) # make sure we know what flag we used for SSE include_directories("include") -find_package(PkgConfig) pkg_check_modules(CCD REQUIRED ccd) include_directories(${CCD_INCLUDE_DIRS}) link_directories(${CCD_LIBRARY_DIRS}) @@ -52,7 +59,6 @@ if(OCTOMAP_FOUND) link_directories(${OCTOMAP_LIBRARY_DIRS}) endif() - add_subdirectory(include/fcl) add_subdirectory(src) diff --git a/trunk/fcl/CMakeModules/FCLCheckOctomap.cmake b/trunk/fcl/CMakeModules/FCLCheckOctomap.cmake deleted file mode 100644 index 43261a61..00000000 --- a/trunk/fcl/CMakeModules/FCLCheckOctomap.cmake +++ /dev/null @@ -1,45 +0,0 @@ -macro(fcl_check_for_octomap) - #check for Octomap - include(CheckCXXSourceRuns) - set(OCTOMAP_FLAGS) - - check_cxx_source_runs(" - #include <octomap/octomap.h> - int main() - { - octomap::OcTree* tree = new octomap::OcTree(0.1); - - for(int x = -20; x < 20; ++x) - { - for(int y = -20; y < 20; ++y) - { - for(int z = -20; z < 20; ++z) - { - tree->updateNode(octomap::point3d(x * 0.05, y * 0.05, z * 0.05), true); - } - } - } - - for(int x = -30; x < 30; ++x) - { - for(int y = -30; y < 30; ++y) - { - for(int z = -30; z < 30; ++z) - { - tree->updateNode(octomap::point3d(x * 0.02 - 1.0, y * 0.02 - 1.0, z * 0.02 - 1.0), false); - } - } - } - - return 1; - }" - HAS_OCTOMAP) - - set(CMAKE_REQUIRED_FLAGS) - - if(HAS_OCTOMAP) - set(OCTOMAP_FLAGS "-loctomap") - message(STATUS " Found octomap, using flags: ${OCTOMAP_FLAGS}") - endif() - -endmacro(fcl_check_for_octomap) \ No newline at end of file diff --git a/trunk/fcl/CMakeModules/FCLVersion.cmake b/trunk/fcl/CMakeModules/FCLVersion.cmake new file mode 100644 index 00000000..68b53676 --- /dev/null +++ b/trunk/fcl/CMakeModules/FCLVersion.cmake @@ -0,0 +1,8 @@ +# set the version in a way CMake can use +set(FCL_MAJOR_VERSION 0) +set(FCL_MINOR_VERSION 2) +set(FCL_PATCH_VERSION 0) +set(FCL_VERSION "${FCL_MAJOR_VERSION}.${FCL_MINOR_VERSION}.${FCL_PATCH_VERSION}") + +# increment this when we have ABI changes +set(FCL_ABI_VERSION 1) diff --git a/trunk/fcl/include/fcl/config.h.in b/trunk/fcl/include/fcl/config.h.in index eff6e78b..ba1aed54 100644 --- a/trunk/fcl/include/fcl/config.h.in +++ b/trunk/fcl/include/fcl/config.h.in @@ -36,6 +36,10 @@ #define FCL_CONFIG_ #define FCL_VERSION "@FCL_VERSION@" +#define FCL_MAJOR_VERSION @FCL_MAJOR_VERSION@ +#define FCL_MINOR_VERSION @FCL_MINOR_VERSION@ +#define FCL_PATCH_VERSION @FCL_PATCH_VERSION@ + #cmakedefine01 FCL_HAVE_SSE #cmakedefine01 FCL_HAVE_OCTOMAP diff --git a/trunk/fcl/src/CMakeLists.txt b/trunk/fcl/src/CMakeLists.txt index abe55237..c349391a 100644 --- a/trunk/fcl/src/CMakeLists.txt +++ b/trunk/fcl/src/CMakeLists.txt @@ -45,6 +45,6 @@ add_library(${PROJECT_NAME} SHARED profile.cpp collision_data.cpp) -target_link_libraries(${PROJECT_NAME} ${CCD_LIBRARIES} ${OCTOMAP_LIBRARIES}) +target_link_libraries(${PROJECT_NAME} ${CCD_LIBRARIES} ${OCTOMAP_LIBRARIES} ${Boost_LIBRARIES}) install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib/ LIBRARY DESTINATION lib/) -- GitLab