-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
113 lines (88 loc) · 3.5 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
cmake_minimum_required(VERSION 3.10.2)
project(whill)
if (NOT CMAKE_BUILD_TYPE)
message(STATUS "No build type selected, default to Release")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
endif()
if (NOT CMAKE_BUILD_TARGET)
message(STATUS "No target type selected, default to both shared and static libraries")
set(CMAKE_BUILD_TARGET "Both" CACHE STRING "" FORCE)
endif()
option(BUILD_EXAMPLE "Build example program" OFF)
option(BUILD_TEST "Build test program" OFF)
set(${PROJECT_NAME}_VERSION_MAJOR 0)
set(${PROJECT_NAME}_VERSION_MINOR 1)
set(${PROJECT_NAME}_VERSION_PATCH 0)
set(${PROJECT_NAME}_VERSION ${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH})
set(${PROJECT_NAME}_DESCRIPTION "A cross-platform library for WHILL Model CR")
set(${PROJECT_NAME}_URL "https://github.com/WHILL/ros_whill")
set(SOURCES
src/Packet.cpp
src/PacketParser.cpp
src/PacketReceiver.cpp
src/SpeedProfile.cpp
src/whill_commands.cpp
src/WHILL.cpp
)
if(${CMAKE_BUILD_TARGET} MATCHES "Shared")
set(BUILD_WHILL_SHARED TRUE)
elseif(${CMAKE_BUILD_TARGET} MATCHES "Static")
set(BUILD_WHILL_STATIC TRUE)
elseif(${CMAKE_BUILD_TARGET} MATCHES "Both")
set(BUILD_WHILL_SHARED TRUE)
set(BUILD_WHILL_STATIC TRUE)
else()
message(FATAL_ERROR "Invalid build type ${CMAKE_BUILD_TYPE}")
endif()
message(STATUS "CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
if(BUILD_WHILL_SHARED)
message(STATUS "Shared library will be built")
add_library(whill SHARED ${SOURCES})
set_property(TARGET whill PROPERTY VERSION ${${PROJECT_NAME}_VERSION})
set_property(TARGET whill PROPERTY SOVERSION ${${PROJECT_NAME}_VERSION_MAJOR})
list(APPEND WHILL_TARGETS whill)
endif()
if(BUILD_WHILL_STATIC)
message(STATUS "Static library will be built")
add_library(whill_static STATIC ${SOURCES})
set_target_properties(whill_static PROPERTIES OUTPUT_NAME whill)
list(APPEND WHILL_TARGETS whill_static)
endif()
foreach (target_name ${WHILL_TARGETS})
set_target_properties(${target_name} PROPERTIES
PUBLIC_HEADER "include/WHILL.h"
)
endforeach()
if(BUILD_EXAMPLE)
#[WIP] build example applications here.
endif()
if(BUILD_TEST)
#[WIP] build test here.
endif()
set(CONF_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include")
set(CONF_LIBRARY_DIR "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}")
set(CONF_LIBRARIES "${CONF_LIBRARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}whill${CMAKE_SHARED_LIBRARY_SUFFIX}")
configure_file(${PROJECT_NAME}.pc.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pc @ONLY)
message(STATUS "Targets will be installed...")
message(STATUS "CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
message(STATUS "CMAKE_LIBRARY_ARCHITECTURE=${CMAKE_LIBRARY_ARCHITECTURE}")
install(TARGETS ${WHILL_TARGETS}
EXPORT ${PROJECT_NAME}-export
LIBRARY DESTINATION "lib/${CMAKE_LIBRARY_ARCHITECTURE}"
ARCHIVE DESTINATION "lib/${CMAKE_LIBRARY_ARCHITECTURE}"
INCLUDES DESTINATION "include"
PUBLIC_HEADER DESTINATION "include/${PROJECT_NAME}"
)
install(EXPORT ${PROJECT_NAME}-export
FILE "${PROJECT_NAME}Config.cmake"
DESTINATION "lib/cmake/${PROJECT_NAME}"
EXPORT_LINK_INTERFACE_LIBRARIES)
install(EXPORT ${PROJECT_NAME}-export
FILE "${PROJECT_NAME}Config-version.cmake"
DESTINATION "lib/cmake/${PROJECT_NAME}"
)
install(FILES
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pc"
DESTINATION "lib/pkgconfig"
)