cmake_minimum_required(VERSION 3.5.1) project(car) set(CMAKE_CXX_STANDARD 14) # for dealing with threads set(CMAKE_CXX_FLAGS "-pthread") # Include Boost find_package(Boost REQUIRED) find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs nodelet message_generation ) add_message_files( FILES camDataMsg.msg ccDataMsg.msg environmentDataMsg.msg logEnabledMsg.msg logStringMsg.msg rcEnabledMsg.msg stmDataMsg.msg ussDataMsg.msg laneDataMsg.msg ) generate_messages( DEPENDENCIES std_msgs ) catkin_package( INCLUDE_DIRS include LIBRARIES main_node LIBRARIES environment LIBRARIES ultrasonic LIBRARIES camera LIBRARIES lanekeeping LIBRARIES mav_link CATKIN_DEPENDS roscpp std_msgs nodelet rospy #message_runtime ) include_directories( include ${catkin_INCLUDE_DIRS} ) set(MAIN_NODE_SOURCE_FILES include/logging/MessageOStream.h include/exceptions/Exceptions.h include/mainNode/CruiseController.h include/mainNode/EgoMotion.h include/mainNode/MainNode.h include/mainNode/NotifiableThread.h include/mainNode/PlatoonController.h include/mainNode/PlatoonState.h src/mainNode/MainNode.cpp src/mainNode/EgoMotion.cpp src/mainNode/NotifiableThread.cpp src/mainNode/PlatoonController.cpp src/mainNode/CruiseController.cpp ) set(ENVIRONMENT_SOURCE_FILES include/logging/MessageOStream.h include/environment/Environment.h include/environment/KalmanFilter.h include/exceptions/Exceptions.h src/environment/Environment.cpp src/environment/KalmanFilter.cpp ) set(LOGGING_SOURCE_FILES include/logging/Logging.h include/logging/MessageOStream.h src/logging/Logging.cpp ) set(USS_SOURCE_FILES include/logging/MessageOStream.h include/ultrasonic/StreamMedianFilter.h include/ultrasonic/UltrasonicSensor.h include/ultrasonic/Ultrasonic.h src/ultrasonic/StreamMedianFilter.cpp src/ultrasonic/Ultrasonic.cpp src/ultrasonic/UltrasonicSensor.cpp ) set(CAMERA_SOURCE_FILES include/logging/MessageOStream.h include/camera/Camera.h src/camera/Camera.cpp ) set(LANE_KEEPING_SOURCE_FILES include/logging/MessageOStream.h include/lanekeeping/Lanekeeping.h src/lanekeeping/Lanekeeping.cpp ) set(MAV_LINK_SOURCE_FILES include/logging/MessageOStream.h include/mavLink/MavLink.h src/mavLink/MavLink.cpp ) set(LOCAL_INSTALL_DIR ${CMAKE_CURRENT_LIST_DIR}/../../install) set(CMAKE_PREFIX_PATH "${LOCAL_INSTALL_DIR}") find_package(NetworkingLib REQUIRED) find_package(PlatoonProtocolLib REQUIRED) find_package(PC2CarLib REQUIRED) find_package(VeloxProtocolLib REQUIRED) find_package(MessageLib REQUIRED) add_library(main_node ${MAIN_NODE_SOURCE_FILES}) add_dependencies(main_node ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(main_node ${catkin_LIBRARIES} ${Boost_LIBRARIES} NetworkingLib PlatoonProtocolLib PC2CarLib) target_include_directories(main_node PUBLIC ${NetworkingLib_INCLUDE_DIRS} ${PlatoonProtocolLib_INCLUDE_DIRS} ${PC2CarLib_INCLUDE_DIRS}) add_library(environment ${ENVIRONMENT_SOURCE_FILES}) add_dependencies(environment ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(environment ${catkin_LIBRARIES}) add_library(logging ${LOGGING_SOURCE_FILES}) add_dependencies(logging ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(logging ${catkin_LIBRARIES} NetworkingLib MessageLib) target_include_directories(logging PUBLIC ${NetworkingLib_INCLUDE_DIRS} ${MessageLib_INCLUDE_DIRS}) add_library(ultrasonic ${USS_SOURCE_FILES}) add_dependencies(ultrasonic ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(ultrasonic ${catkin_LIBRARIES} NetworkingLib libwiringPi.so) target_include_directories(ultrasonic PUBLIC ${NetworkingLib_INCLUDE_DIRS} ${MessageLib_INCLUDE_DIRS}) find_package( OpenCV REQUIRED ) add_library(camera ${CAMERA_SOURCE_FILES}) add_dependencies(camera ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(camera ${catkin_LIBRARIES} ${OpenCV_LIBS} ) add_library(lanekeeping ${LANE_KEEPING_SOURCE_FILES}) add_dependencies(lanekeeping ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(lanekeeping ${catkin_LIBRARIES}) add_library(mav_link ${MAV_LINK_SOURCE_FILES}) add_dependencies(mav_link ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(mav_link ${catkin_LIBRARIES} VeloxProtocolLib) target_include_directories(mav_link PUBLIC ${VeloxProtocolLib_INCLUDE_DIRS}) # NotifiableThread Test set(NOTIFIABLE_THREAD_TEST_SOURCE_FILES include/mainNode/NotifiableThread.h src/mainNode/NotifiableThread.cpp test/mainNode/NotifiableThreadTest.cpp) add_executable(NotifiableThreadTest ${NOTIFIABLE_THREAD_TEST_SOURCE_FILES}) install( TARGETS main_node environment ultrasonic camera lanekeeping mav_link ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) install( DIRECTORY include/ DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} ) install( DIRECTORY plugins/ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/plugins PATTERN ".svn" EXCLUDE )