diff --git a/CMakeLists.txt b/CMakeLists.txt index 08ceb03..de96fce 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,18 @@ cmake_minimum_required(VERSION 3.10) + +# ======================================================== +# Dual-mode CMakeLists.txt: Supports both Catkin and Standalone CMake +# ======================================================== + +# Detect if building with Catkin +if(DEFINED CATKIN_DEVEL_PREFIX OR DEFINED CATKIN_TOPLEVEL) + set(BUILDING_WITH_CATKIN TRUE) + message(STATUS "Building robot_voxel_grid with Catkin") +else() + set(BUILDING_WITH_CATKIN FALSE) + message(STATUS "Building robot_voxel_grid with Standalone CMake") +endif() + project(robot_voxel_grid) set(CMAKE_CXX_STANDARD 17) @@ -6,18 +20,41 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) include(CTest) +# ======================================================== +# Find dependencies +# ======================================================== + +if(BUILDING_WITH_CATKIN) + find_package(catkin REQUIRED) +endif() + # # Check for sys/time.h # check_include_file(sys/time.h HAVE_SYS_TIME_H) # if (HAVE_SYS_TIME_H) # add_definitions(-DHAVE_SYS_TIME_H) # endif (HAVE_SYS_TIME_H) +# ======================================================== +# Catkin specific configuration +# ======================================================== + +if(BUILDING_WITH_CATKIN) + catkin_package( + INCLUDE_DIRS include + LIBRARIES robot_voxel_grid + ) +endif() + # Include directories include_directories( include ${GTEST_INCLUDE_DIRS} ) +if(BUILDING_WITH_CATKIN) + include_directories(${catkin_INCLUDE_DIRS}) +endif() + # Library add_library(robot_voxel_grid SHARED src/voxel_grid.cpp) @@ -27,6 +64,14 @@ target_include_directories(robot_voxel_grid $ ) +if(BUILDING_WITH_CATKIN) + add_dependencies(robot_voxel_grid ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) +endif() + +# ======================================================== +# Installation +# ======================================================== + # Install targets install(TARGETS robot_voxel_grid EXPORT robot_voxel_gridTargets @@ -36,10 +81,12 @@ install(TARGETS robot_voxel_grid INCLUDES DESTINATION include ) -# Install headers -install(DIRECTORY include/${PROJECT_NAME}/ - DESTINATION include/${PROJECT_NAME} -) +if(NOT BUILDING_WITH_CATKIN) + # Install headers (standalone) + install(DIRECTORY include/${PROJECT_NAME}/ + DESTINATION include/${PROJECT_NAME} + ) +endif() install(EXPORT robot_voxel_gridTargets DESTINATION lib/cmake/robot_voxel_grid) diff --git a/package.xml b/package.xml index 448d844..21883a6 100644 --- a/package.xml +++ b/package.xml @@ -19,8 +19,5 @@ catkin - libconsole-bridge-dev - - libconsole-bridge-dev \ No newline at end of file