mirror of
https://github.com/wjwwood/serial.git
synced 2026-01-22 19:54:57 +08:00
Added ability to use serial as a cmake subdirectory and install with out using catkin at all, effectively eliminating the python and catkin dependency. currently does not fix any other CMake file besides the main one, so tests still requires catkin to work.
This commit is contained in:
parent
33e5a31ab7
commit
a59a81fd82
@ -1,8 +1,13 @@
|
|||||||
cmake_minimum_required(VERSION 2.8.3)
|
cmake_minimum_required(VERSION 2.8.3)
|
||||||
project(serial)
|
project(serial)
|
||||||
|
|
||||||
|
#Catkin is not required at all in modern cmake, dependencies are handled fine through target_link_libraries.
|
||||||
|
#We set the default to be on to not break anyone's builds.
|
||||||
|
option(SERIAL_ENABLE_CATKIN "Enable using the Catkin make extension to cmake (ie for ROS)" ON)
|
||||||
|
if(${SERIAL_ENABLE_CATKIN})
|
||||||
# Find catkin
|
# Find catkin
|
||||||
find_package(catkin REQUIRED)
|
find_package(catkin REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
find_library(IOKIT_LIBRARY IOKit)
|
find_library(IOKIT_LIBRARY IOKit)
|
||||||
@ -13,18 +18,22 @@ if(UNIX AND NOT APPLE)
|
|||||||
# If Linux, add rt and pthread
|
# If Linux, add rt and pthread
|
||||||
set(rt_LIBRARIES rt)
|
set(rt_LIBRARIES rt)
|
||||||
set(pthread_LIBRARIES pthread)
|
set(pthread_LIBRARIES pthread)
|
||||||
|
if(${SERIAL_ENABLE_CATKIN})
|
||||||
catkin_package(
|
catkin_package(
|
||||||
LIBRARIES ${PROJECT_NAME}
|
LIBRARIES ${PROJECT_NAME}
|
||||||
INCLUDE_DIRS include
|
INCLUDE_DIRS include
|
||||||
DEPENDS rt pthread
|
DEPENDS rt pthread
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
# Otherwise normal call
|
# Otherwise normal call
|
||||||
|
if(${SERIAL_ENABLE_CATKIN})
|
||||||
catkin_package(
|
catkin_package(
|
||||||
LIBRARIES ${PROJECT_NAME}
|
LIBRARIES ${PROJECT_NAME}
|
||||||
INCLUDE_DIRS include
|
INCLUDE_DIRS include
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
## Sources
|
## Sources
|
||||||
set(serial_SRCS
|
set(serial_SRCS
|
||||||
@ -61,9 +70,11 @@ add_executable(serial_example examples/serial_example.cc)
|
|||||||
add_dependencies(serial_example ${PROJECT_NAME})
|
add_dependencies(serial_example ${PROJECT_NAME})
|
||||||
target_link_libraries(serial_example ${PROJECT_NAME})
|
target_link_libraries(serial_example ${PROJECT_NAME})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if(${SERIAL_ENABLE_CATKIN})
|
||||||
## Include headers
|
## Include headers
|
||||||
include_directories(include)
|
include_directories(include)
|
||||||
|
|
||||||
## Install executable
|
## Install executable
|
||||||
install(TARGETS ${PROJECT_NAME}
|
install(TARGETS ${PROJECT_NAME}
|
||||||
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
||||||
@ -74,8 +85,47 @@ install(TARGETS ${PROJECT_NAME}
|
|||||||
## Install headers
|
## Install headers
|
||||||
install(FILES include/serial/serial.h include/serial/v8stdint.h
|
install(FILES include/serial/serial.h include/serial/v8stdint.h
|
||||||
DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}/serial)
|
DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}/serial)
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
if(CATKIN_ENABLE_TESTING)
|
if(CATKIN_ENABLE_TESTING)
|
||||||
add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
endif()
|
endif()
|
||||||
|
else()
|
||||||
|
# while some of this uses stuff from newer CMake versions, the code before already ignored 2.8 compat,
|
||||||
|
# so we ignore it here as well.
|
||||||
|
# see this: https://www.youtube.com/watch?v=m0DwB4OvDXk and associated slides hosted on github to learn more.
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||||
|
$<INSTALL_INTERFACE:include>
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
|
||||||
|
# Install targets
|
||||||
|
install(TARGETS ${PROJECT_NAME}
|
||||||
|
EXPORT ${PROJECT_NAME}Targets
|
||||||
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
|
COMPONENT ${PROJECT_NAME}_RunTime
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
COMPONENT ${PROJECT_NAME}_RunTime
|
||||||
|
NAMELINK_COMPONENT ${PROJECT_NAME}_Development
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
|
COMPONENT ${PROJECT_NAME}_Development
|
||||||
|
|
||||||
|
)
|
||||||
|
# Install header files
|
||||||
|
install(FILES
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/include/serial/serial.h
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/include/serial/v8stdint.h
|
||||||
|
DESTINATION
|
||||||
|
${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
||||||
|
# Install cmake stuff so we can use our target
|
||||||
|
install(EXPORT ${PROJECT_NAME}Targets
|
||||||
|
FILE ${PROJECT_NAME}Targets.cmake
|
||||||
|
NAMESPACE ${PROJECT_NAME}::
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
|
||||||
|
)
|
||||||
|
option(SERIAL_ENABLE_TESTING "Enable testing" OFF)
|
||||||
|
if(${SERIAL_ENABLE_TESTING})
|
||||||
|
add_subdirectory(tests)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user