diff --git a/CMakeLists.txt b/CMakeLists.txt index e1474ad1..27ea7903 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,80 +1,65 @@ -cmake_minimum_required(VERSION 2.8.3) +cmake_minimum_required(VERSION 3.5) project(serial) -# Find catkin -find_package(catkin REQUIRED) +find_package(ament_cmake REQUIRED) -if(APPLE) - find_library(IOKIT_LIBRARY IOKit) - find_library(FOUNDATION_LIBRARY Foundation) -endif() +ament_export_include_directories(include) +ament_export_libraries(${PROJECT_NAME}) -if(UNIX AND NOT APPLE) - # If Linux, add rt and pthread - set(rt_LIBRARIES rt) - set(pthread_LIBRARIES pthread) - catkin_package( - LIBRARIES ${PROJECT_NAME} - INCLUDE_DIRS include - DEPENDS rt pthread - ) -else() - # Otherwise normal call - catkin_package( - LIBRARIES ${PROJECT_NAME} - INCLUDE_DIRS include - ) -endif() - -## Sources -set(serial_SRCS +## Add serial library +add_library(${PROJECT_NAME} src/serial.cc include/serial/serial.h include/serial/v8stdint.h ) -if(APPLE) - # If OSX - list(APPEND serial_SRCS src/impl/unix.cc) - list(APPEND serial_SRCS src/impl/list_ports/list_ports_osx.cc) -elseif(UNIX) - # If unix - list(APPEND serial_SRCS src/impl/unix.cc) - list(APPEND serial_SRCS src/impl/list_ports/list_ports_linux.cc) -else() - # If windows - list(APPEND serial_SRCS src/impl/win.cc) - list(APPEND serial_SRCS src/impl/list_ports/list_ports_win.cc) -endif() -## Add serial library -add_library(${PROJECT_NAME} ${serial_SRCS}) -if(APPLE) +if(APPLE) # macOS + find_library(IOKIT_LIBRARY IOKit) + find_library(FOUNDATION_LIBRARY Foundation) + target_sources(${PROJECT_NAME} PRIVATE + src/impl/unix.cc + src/impl/list_ports/list_ports_osx.cc + ) + target_link_libraries(${PROJECT_NAME} ${FOUNDATION_LIBRARY} ${IOKIT_LIBRARY}) -elseif(UNIX) + +elseif(UNIX) # Unix + target_sources(${PROJECT_NAME} PRIVATE + src/impl/unix.cc + src/impl/list_ports/list_ports_linux.cc + ) + target_link_libraries(${PROJECT_NAME} rt pthread) -else() + +elseif(WIN32) # Windows + target_sources(${PROJECT_NAME} PRIVATE + src/impl/win.cc + src/impl/list_ports/list_ports_win.cc + ) + target_link_libraries(${PROJECT_NAME} setupapi) + ament_export_libraries(setupapi) endif() ## Uncomment for example -add_executable(serial_example examples/serial_example.cc) -add_dependencies(serial_example ${PROJECT_NAME}) -target_link_libraries(serial_example ${PROJECT_NAME}) +# add_executable(serial_example examples/serial_example.cc) +# add_dependencies(serial_example ${PROJECT_NAME}) +# target_link_libraries(serial_example ${PROJECT_NAME}) ## Include headers -include_directories(include) +target_include_directories(${PROJECT_NAME} PRIVATE include) + +target_compile_options(${PROJECT_NAME} PRIVATE -fPIC) ## Install executable install(TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib ) ## Install headers install(FILES include/serial/serial.h include/serial/v8stdint.h - DESTINATION ${CATKIN_GLOBAL_INCLUDE_DESTINATION}/serial) + DESTINATION include/serial +) -## Tests -if(CATKIN_ENABLE_TESTING) - add_subdirectory(tests) -endif() +ament_package()