-
Hoop77 authoredf43633e8
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
CMakeLists.txt 5.59 KiB
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
)