112 lines
4.0 KiB
CMake
112 lines
4.0 KiB
CMake
cmake_minimum_required(VERSION 3.3)
|
|
|
|
# Find ROS build system
|
|
find_package(catkin QUIET COMPONENTS roscpp ov_core)
|
|
|
|
# Describe ROS project
|
|
option(ENABLE_ROS "Enable or disable building with ROS (if it is found)" ON)
|
|
if (catkin_FOUND AND ENABLE_ROS)
|
|
add_definitions(-DROS_AVAILABLE=1)
|
|
catkin_package(
|
|
CATKIN_DEPENDS roscpp cv_bridge ov_core
|
|
INCLUDE_DIRS src/
|
|
LIBRARIES ov_init_lib
|
|
)
|
|
else ()
|
|
add_definitions(-DROS_AVAILABLE=0)
|
|
message(WARNING "BUILDING WITHOUT ROS!")
|
|
include(GNUInstallDirs)
|
|
set(CATKIN_PACKAGE_LIB_DESTINATION "${CMAKE_INSTALL_LIBDIR}")
|
|
set(CATKIN_PACKAGE_BIN_DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
|
set(CATKIN_GLOBAL_INCLUDE_DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
|
|
endif ()
|
|
|
|
# Include our header files
|
|
include_directories(
|
|
src
|
|
${EIGEN3_INCLUDE_DIR}
|
|
${Boost_INCLUDE_DIRS}
|
|
${CERES_INCLUDE_DIRS}
|
|
${catkin_INCLUDE_DIRS}
|
|
)
|
|
|
|
# Set link libraries used by all binaries
|
|
list(APPEND thirdparty_libraries
|
|
${Boost_LIBRARIES}
|
|
${OpenCV_LIBRARIES}
|
|
${CERES_LIBRARIES}
|
|
${catkin_LIBRARIES}
|
|
)
|
|
|
|
# If we are not building with ROS then we need to manually link to its headers
|
|
# This isn't that elegant of a way, but this at least allows for building without ROS
|
|
# See this stackoverflow answer: https://stackoverflow.com/a/11217008/7718197
|
|
if (NOT catkin_FOUND OR NOT ENABLE_ROS)
|
|
|
|
message(STATUS "MANUALLY LINKING TO OV_CORE LIBRARY....")
|
|
include_directories(${CMAKE_SOURCE_DIR}/../ov_core/src/)
|
|
file(GLOB_RECURSE OVCORE_LIBRARY_SOURCES "${CMAKE_SOURCE_DIR}/../ov_core/src/*.cpp")
|
|
list(FILTER OVCORE_LIBRARY_SOURCES EXCLUDE REGEX ".*test_webcam\\.cpp$")
|
|
list(FILTER OVCORE_LIBRARY_SOURCES EXCLUDE REGEX ".*test_tracking\\.cpp$")
|
|
list(APPEND LIBRARY_SOURCES ${OVCORE_LIBRARY_SOURCES})
|
|
file(GLOB_RECURSE OVCORE_LIBRARY_HEADERS "${CMAKE_SOURCE_DIR}/../ov_core/src/*.h")
|
|
list(APPEND LIBRARY_HEADERS ${OVCORE_LIBRARY_HEADERS})
|
|
|
|
endif ()
|
|
|
|
##################################################
|
|
# Make the shared library
|
|
##################################################
|
|
|
|
list(APPEND LIBRARY_SOURCES
|
|
src/dummy.cpp
|
|
src/init/InertialInitializer.cpp
|
|
src/dynamic/DynamicInitializer.cpp
|
|
src/static/StaticInitializer.cpp
|
|
src/sim/Simulator.cpp
|
|
)
|
|
file(GLOB_RECURSE LIBRARY_HEADERS "src/*.h")
|
|
add_library(ov_init_lib SHARED ${LIBRARY_SOURCES} ${LIBRARY_HEADERS})
|
|
target_link_libraries(ov_init_lib ${thirdparty_libraries})
|
|
target_include_directories(ov_init_lib PUBLIC src/)
|
|
install(TARGETS ov_init_lib
|
|
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
|
|
)
|
|
install(DIRECTORY src/
|
|
DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}
|
|
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
|
|
)
|
|
|
|
|
|
##################################################
|
|
# Make binary files!
|
|
##################################################
|
|
|
|
add_executable(test_simulation src/test_simulation.cpp)
|
|
target_link_libraries(test_simulation ov_init_lib ${thirdparty_libraries})
|
|
install(TARGETS test_simulation
|
|
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
|
|
)
|
|
|
|
add_executable(test_dynamic_mle src/test_dynamic_mle.cpp)
|
|
target_link_libraries(test_dynamic_mle ov_init_lib ${thirdparty_libraries})
|
|
install(TARGETS test_dynamic_mle
|
|
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
|
|
)
|
|
|
|
add_executable(test_dynamic_init src/test_dynamic_init.cpp)
|
|
target_link_libraries(test_dynamic_init ov_init_lib ${thirdparty_libraries})
|
|
install(TARGETS test_dynamic_init
|
|
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
|
|
)
|
|
|
|
|