-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
83 lines (68 loc) · 2.61 KB
/
CMakeLists.txt
File metadata and controls
83 lines (68 loc) · 2.61 KB
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
# set minimum version required for cmake
cmake_minimum_required(VERSION 3.10.2)
# set the project name and version
project(cmake_tutorial LANGUAGES C CXX VERSION 1.1.0)
## project options
option(BUILD_TESTING "Build tests" OFF)
if(BUILD_TESTING)
message(STATUS "Build test")
else()
message(STATUS "Tests will not be built")
endif()
## select robot
if(NOT DEFINED ROBOT)
set(ROBOT "differential")
endif()
message(STATUS "Selected robot: " ${ROBOT})
include(GNUInstallDirs)
# Relative path for shared libraries
file(RELATIVE_PATH relDir
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}
${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
)
set(CMAKE_INSTALL_RPATH $ORIGIN $ORIGIN/${relDir})
## Put all binary files into /bin and libraries into /lib
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
## check distro
execute_process(COMMAND lsb_release -cs
OUTPUT_VARIABLE RELEASE_CODENAME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
## find package
if (RELEASE_CODENAME STREQUAL "bionic")
find_package(PythonLibs 3 REQUIRED)
elseif (RELEASE_CODENAME STREQUAL "focal")
find_package(Python3 REQUIRED)
endif()
## although there is no OpenCV package installed, it will not have error
find_package(OpenCV QUIET)
## get filename component
get_filename_component(TUTORIAL1_PATH src/app/tutorial1 REALPATH)
message(STATUS "Tutorial1 path: " ${TUTORIAL1_PATH})
## include example target
include(${PROJECT_SOURCE_DIR}/cmake/MakeCalendar.cmake)
## add source file
add_subdirectory(src)
## install package
if (${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.11)
install(TARGETS tutorial1 tutorial2 tutorial3 tutorial4 printv1
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
else()
message(WARNING "No target would be installed, please consider update the cmake version")
endif()
# Packaging support
set(CPACK_PACKAGE_VENDOR "Pin Loon")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "CMake tutorial")
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/cmake_tutorial")
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_GENERATOR "DEB")
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "PinLoon Lee (pinloon_0428@hotmail.com)")
include(CPack)