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/camera/Camera.h include/environment/Environment.h include/exceptions/Exceptions.h include/lanekeeping/Lanekeeping.h include/logging/Logging.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 include/mavLink/MavLink.h include/ultrasonic/StreamMedianFilter.h include/ultrasonic/Ultrasonic.h include/ultrasonic/USS_SRF02.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 src/environment/Environment.cpp src/environment/KalmanFilter.cpp ) set(USS_SOURCE_FILES src/ultrasonic/StreamMedianFilter.cpp src/ultrasonic/Ultrasonic.cpp src/ultrasonic/USS_SRF02.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) 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 src/logging/Logging.cpp) add_dependencies(logging ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(logging ${catkin_LIBRARIES} NetworkingLib) target_include_directories(logging PUBLIC ${NetworkingLib_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} libwiringPi.so ) add_library(camera src/camera/Camera.cpp) add_dependencies(camera ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(camera ${catkin_LIBRARIES}) add_library(lanekeeping src/lanekeeping/Lanekeeping.cpp) add_dependencies(lanekeeping ${catkin_EXPORTED_TARGETS} ${PROJECT_NAME}_generate_messages_cpp) target_link_libraries(lanekeeping ${catkin_LIBRARIES}) add_library(mav_link src/mavLink/MavLink.cpp) 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 )