# After installation this project can be found by 'find_package' command: # # find_package(libcreate REQUIRED) # include_directores(${libcreate_INCLUDE_DIRS}) # target_link_libraries(... ${libcreate_LIBRARIES}) # cmake_minimum_required(VERSION 2.8.12) project(libcreate) set(PACKAGE_VERSION 1.5.0) find_package(Boost REQUIRED COMPONENTS system thread) find_package(Threads REQUIRED) ######### # Build # ######### set(LIBRARY_NAME create) # Specify locations of header files include_directories( include ) # Declare cpp library add_library(${LIBRARY_NAME} SHARED src/create.cpp src/serial.cpp src/serial_stream.cpp src/serial_query.cpp src/data.cpp src/packet.cpp src/types.cpp ) # Manually link to thread library for build on ARM if(THREADS_HAVE_PTHREAD_ARG) set_property(TARGET ${LIBRARY_NAME} PROPERTY COMPILE_OPTIONS "-pthread") set_property(TARGET ${LIBRARY_NAME} PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") endif() if(CMAKE_THREAD_LIBS_INIT) target_link_libraries(${LIBRARY_NAME} "${CMAKE_THREAD_LIBS_INIT}") endif() # Link to Boost target_link_libraries(${LIBRARY_NAME} ${Boost_LIBRARIES} ) # Declare example executables add_executable(create_demo examples/create_demo.cpp) add_executable(bumper_example examples/bumper_example.cpp) add_executable(odom_example examples/odom_example.cpp) # Specify libraries to link executable targets against target_link_libraries(create_demo ${Boost_LIBRARIES} ${LIBRARY_NAME} ) target_link_libraries(bumper_example ${Boost_LIBRARIES} ${LIBRARY_NAME} ) target_link_libraries(odom_example ${Boost_LIBRARIES} ${LIBRARY_NAME} ) ################# # Configuration # ################# # Install directories layout: # * /lib/ # * /bin/ # * /include/ # * /lib/cmake/ # * /share/ set(LIB_INSTALL_DIR "lib") set(BIN_INSTALL_DIR "bin") set(INCLUDE_INSTALL_DIR "include") set(CONFIG_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME}") set(SHARE_INSTALL_DIR "share/${PROJECT_NAME}") set(GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated") set(VERSION_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}-config-version.cmake") set(PROJECT_CONFIG "${GENERATED_DIR}/${PROJECT_NAME}-config.cmake") set(TARGETS_EXPORT_NAME "${PROJECT_NAME}-targets") include(CMakePackageConfigHelpers) # Configure '-config-version.cmake' write_basic_package_version_file( "${VERSION_CONFIG}" VERSION "${PACKAGE_VERSION}" COMPATIBILITY SameMajorVersion ) # Configure '-config.cmake' configure_package_config_file( "config.cmake.in" "${PROJECT_CONFIG}" INSTALL_DESTINATION "${CONFIG_INSTALL_DIR}" PATH_VARS INCLUDE_INSTALL_DIR LIBRARY_NAME ) ########### # Install # ########### # Install targets install( TARGETS ${LIBRARY_NAME} EXPORT "${TARGETS_EXPORT_NAME}" LIBRARY DESTINATION "${LIB_INSTALL_DIR}" ARCHIVE DESTINATION "${LIB_INSTALL_DIR}" RUNTIME DESTINATION "${BIN_INSTALL_DIR}" INCLUDES DESTINATION "${INCLUDE_INSTALL_DIR}" ) # Install headers install( DIRECTORY include/ DESTINATION ${INCLUDE_INSTALL_DIR} FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE ) # Install config install( FILES "${PROJECT_CONFIG}" "${VERSION_CONFIG}" DESTINATION "${CONFIG_INSTALL_DIR}" ) # Install targets install( EXPORT "${TARGETS_EXPORT_NAME}" DESTINATION "${CONFIG_INSTALL_DIR}" ) # Install package.xml (for catkin) install( FILES package.xml DESTINATION ${SHARE_INSTALL_DIR} )