An error occurred while loading the file. Please try again.
-
Hoop77 authored7d91b628
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
CMakeLists.txt 6.93 KiB
cmake_minimum_required(VERSION 3.5.1)
project(VeloxProtocol)
set(VeloxProtocol_VERSION_MAJOR 0)
set(VeloxProtocol_VERSION_MINOR 1)
set(CMAKE_CXX_STANDARD 14)
# configure a header file to pass some of the CMake settings
# to the source code
configure_file(
"${PROJECT_SOURCE_DIR}/src/VeloxProtocolLibConfig.h.in"
"${PROJECT_BINARY_DIR}/VeloxProtocolLibConfig.h")
# so we can import the config header file
include_directories("${PROJECT_BINARY_DIR}")
# compiler flags
set(CMAKE_CXX_FLAGS -pthread)
set(SOURCE_FILES
include/VeloxProtocolLib/mavlink/checksum.h
include/VeloxProtocolLib/mavlink/mavlink_conversions.h
include/VeloxProtocolLib/mavlink/mavlink_get_info.h
include/VeloxProtocolLib/mavlink/mavlink_helpers.h
include/VeloxProtocolLib/mavlink/mavlink_sha256.h
include/VeloxProtocolLib/mavlink/mavlink_types.h
include/VeloxProtocolLib/mavlink/protocol.h
include/VeloxProtocolLib/mavlink/velox/mavlink.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_carcontrol.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_cmd_request_clocksync.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_cmd_request_msg.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_cmd_request_statechange.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_error.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_heartbeat.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_odometry.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_trajectory.h
include/VeloxProtocolLib/mavlink/velox/testsuite.h
include/VeloxProtocolLib/mavlink/velox/velox.h
include/VeloxProtocolLib/mavlink/velox/version.h
include/VeloxProtocolLib/Connection.h
src/Connection.cpp)
set(PUBLIC_HEADER_FILES
include/VeloxProtocolLib/mavlink/checksum.h
include/VeloxProtocolLib/mavlink/mavlink_conversions.h
include/VeloxProtocolLib/mavlink/mavlink_get_info.h
include/VeloxProtocolLib/mavlink/mavlink_helpers.h
include/VeloxProtocolLib/mavlink/mavlink_sha256.h
include/VeloxProtocolLib/mavlink/mavlink_types.h
include/VeloxProtocolLib/mavlink/protocol.h
include/VeloxProtocolLib/mavlink/velox/mavlink.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_carcontrol.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_cmd_request_clocksync.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_cmd_request_msg.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_cmd_request_statechange.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_error.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_heartbeat.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_odometry.h
include/VeloxProtocolLib/mavlink/velox/mavlink_msg_trajectory.h
include/VeloxProtocolLib/mavlink/velox/testsuite.h
include/VeloxProtocolLib/mavlink/velox/velox.h
include/VeloxProtocolLib/mavlink/velox/version.h
include/VeloxProtocolLib/Connection.h
${CMAKE_CURRENT_BINARY_DIR}/VeloxProtocolLibConfig.h)
foreach (HEADER ${PUBLIC_HEADER_FILES})
set(PUBLIC_HEADER_FILES_COMBINED "${PUBLIC_HEADER_FILES_COMBINED}\\;${HEADER}")
endforeach ()
add_library(VeloxProtocolLib SHARED ${SOURCE_FILES})
# Specify public header files
set_target_properties(VeloxProtocolLib PROPERTIES PUBLIC_HEADER ${PUBLIC_HEADER_FILES_COMBINED})
set(LOCAL_INSTALL_DIR ${CMAKE_CURRENT_LIST_DIR}/../../install)
set(CMAKE_PREFIX_PATH "${LOCAL_INSTALL_DIR}")
# NetworkingLib
find_package(NetworkingLib REQUIRED)
target_include_directories(VeloxProtocolLib PUBLIC ${NetworkingLib_INCLUDE_DIRS})
target_link_libraries(VeloxProtocolLib NetworkingLib)
find_package(Boost REQUIRED COMPONENTS system regex)
link_libraries(${Boost_LIBRARIES})
set(INSTALL_PACKAGE ON)
if (INSTALL_PACKAGE)
#############################
# Specify install directories
#############################
set(CMAKE_INSTALL_PREFIX "${LOCAL_INSTALL_DIR}")
set(INSTALL_LIB_DIR lib/VeloxProtocolLib)
set(INSTALL_INCLUDE_DIR include/VeloxProtocolLib)
set(INSTALL_CMAKE_DIR lib/VeloxProtocolLib/CMake)
# Make relative paths absolute (needed later on)
foreach (p LIB INCLUDE CMAKE)
set(var INSTALL_${p}_DIR)
if (NOT IS_ABSOLUTE "${${var}}")
set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
endif ()
endforeach ()
####################################################
# Create the *Config.cmake and *ConfigVersion files
####################################################
# Get the relative path from the cmake install directory to the include install directory
file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}")
# Configure *Config.cmake.in for the install tree
# Put it inside the cmake-files directory (which is located inside the binary directory)
set(CONF_INCLUDE_DIRS "\${VELOX_PROTOCOL_LIB_CMAKE_DIR}/${REL_INCLUDE_DIR}/..")
configure_file(VeloxProtocolLibConfig.cmake.in
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/VeloxProtocolLibConfig.cmake"
@ONLY)
# Configure *ConfigVersion.cmake.in for both build and install tree
# Put it inside the binary directory
configure_file(VeloxProtocolLibConfigVersion.cmake.in
"${PROJECT_BINARY_DIR}/VeloxProtocolLibConfigVersion.cmake" @ONLY)
########################
# Install VeloxProtocolLib
########################
# Install library and header files
install(TARGETS VeloxProtocolLib
EXPORT VeloxProtocolLibTargets
LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
RUNTIME DESTINATION "${INSTALL_LIB_DIR}") # for windows
install(DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/include/VeloxProtocolLib"
DESTINATION "${CMAKE_INSTALL_PREFIX}/include")
# Install the VeloxProtocolLibConfig.cmake and VeloxProtocolLibConfigVersion.cmake
install(FILES
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/VeloxProtocolLibConfig.cmake"
"${PROJECT_BINARY_DIR}/VeloxProtocolLibConfigVersion.cmake"
DESTINATION "${INSTALL_CMAKE_DIR}")
# Install the export set for use with the install-tree
install(EXPORT VeloxProtocolLibTargets
DESTINATION "${INSTALL_CMAKE_DIR}")
endif ()
#######
# Test
#######
set(TEST_SOURCE_FILES
test/USS_SRF02.h
test/USS_SRF02.cpp)
add_executable(TerminalControl ${SOURCE_FILES} ${TEST_SOURCE_FILES} test/TerminalControl.cpp)
add_executable(SpeedMeasure ${SOURCE_FILES} ${TEST_SOURCE_FILES} test/SpeedMeasure.cpp)
# NetworkingLib
target_include_directories(TerminalControl PUBLIC ${NetworkingLib_INCLUDE_DIRS})
target_link_libraries(TerminalControl NetworkingLib libwiringPi.so)
target_include_directories(SpeedMeasure PUBLIC ${NetworkingLib_INCLUDE_DIRS})
target_link_libraries(SpeedMeasure NetworkingLib libwiringPi.so)