forked from mavlink/MAVSDK
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
65 lines (51 loc) · 2.65 KB
/
Copy pathCMakeLists.txt
File metadata and controls
65 lines (51 loc) · 2.65 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
cmake_minimum_required(VERSION 3.22.1)
option(SUPERBUILD "Build dependencies" ON)
option(BUILD_MAVSDK_SERVER "Build mavsdk_server" OFF)
option(BUILD_WITH_PROTO_REFLECTION "Build mavsdk_server with proto reflection" OFF)
option(BUILD_SHARED_LIBS "Build core as shared libraries instead of static ones" ON)
option(MAVLINK_DIALECT "MAVLink dialect. Default: common" "common")
option(BUILD_TESTING "Build tests" ON)
option(BUILD_WITHOUT_CURL "Build without CURL" OFF)
message("Using cmake version: ${CMAKE_VERSION}")
if (NOT MAVLINK_DIALECT)
set(MAVLINK_DIALECT "common")
endif()
execute_process(
COMMAND git describe --abbrev=8 --dirty --always --tags
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE VERSION_STR
OUTPUT_STRIP_TRAILING_WHITESPACE
RESULT_VARIABLE GITVER
)
if (NOT GITVER EQUAL "0")
message(STATUS "No git version found. Falling back to empty version no")
set(VERSION_STR "0.0.0")
endif()
message(STATUS "Version: ${VERSION_STR}")
STRING(REGEX REPLACE v\([0-9]+\).[0-9]+.[0-9]+.*$ \\1 MAVSDK_VERSION_MAJOR "${VERSION_STR}")
STRING(REGEX REPLACE v[0-9]+.\([0-9]+\).[0-9]+.*$ \\1 MAVSDK_VERSION_MINOR "${VERSION_STR}")
STRING(REGEX REPLACE v[0-9]+.[0-9]+.\([0-9]+\).*$ \\1 MAVSDK_VERSION_PATCH "${VERSION_STR}")
message(STATUS "Version major: ${MAVSDK_VERSION_MAJOR}")
message(STATUS "Version minor: ${MAVSDK_VERSION_MINOR}")
message(STATUS "Version patch: ${MAVSDK_VERSION_PATCH}")
set(MAVSDK_SOVERSION_STRING ${MAVSDK_VERSION_MAJOR})
set(MAVSDK_VERSION_STRING ${MAVSDK_VERSION_MAJOR}.${MAVSDK_VERSION_MINOR}.${MAVSDK_VERSION_PATCH})
project(mavsdk_superbuild)
# FIXME: in the future we need to mark library methods that need to be visible manually
# and remove CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.
# At the moment, we are running into the 65535 object limit on Windows likely because of this.
if (BUILD_SHARED_LIBS AND MSVC AND BUILD_MAVSDK_SERVER)
message(FATAL_ERROR
"To build mavsdk_server on Windows, you need to use BUILD_SHARED_LIBS=OFF.\n"
"This avoids the Windows 65535 object limit when statically linking all dependencies.\n"
"Use: cmake -DBUILD_SHARED_LIBS=OFF ..."
)
endif()
if (BUILD_BACKEND)
message(FATAL_ERROR "The argument BUILD_BACKEND has been replaced by BUILD_MAVSDK_SERVER. To build mavsdk_server, use -DBUILD_MAVSDK_SERVER=ON.")
endif()
set(DEPS_BUILD_PATH "${PROJECT_BINARY_DIR}/third_party" CACHE PATH "Install path for the dependencies. Ignored if SUPERBUILD=OFF.")
set(DEPS_INSTALL_PATH "${DEPS_BUILD_PATH}/install" CACHE PATH "Install path for the dependencies. Ignored if SUPERBUILD=OFF.")
include(GNUInstallDirs)
add_subdirectory(third_party)
add_subdirectory(src)