-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
61 lines (52 loc) · 2.15 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
cmake_minimum_required(VERSION 3.14)
option(CROSSCOMPILE_ARM "Cross compiling for arm architecture" OFF)
if(CROSSCOMPILE_ARM)
if(DEFINED ENV{LINUX_ARM_TOOLCHAIN_PATH})
set (LINUX_ARM_TOOLCHAIN_PATH $ENV{LINUX_ARM_TOOLCHAIN_PATH})
else()
set (LINUX_ARM_TOOLCHAIN_PATH /usr/lib/ccache)
endif()
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/cmake/arm_build.cmake)
endif()
project(Ducklink VERSION 0.1.0)
set (CMAKE_CXX_STANDARD 14)
include(GNUInstallDirs)
add_subdirectory(deps)
add_library(Ducklink STATIC src/SerialDucklink.cpp src/UDPDucklink.cpp ${Serialib_SRC_FILES})
target_include_directories(Ducklink PRIVATE ${Serialib_INCLUDE_DIR})
target_include_directories(Ducklink PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
target_include_directories(Ducklink PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/generated>
$<INSTALL_INTERFACE:include>)
target_link_libraries(Ducklink PUBLIC Protoduck)
set_target_properties(Ducklink PROPERTIES PUBLIC_HEADER "include/Ducklink/DucklinkBase.h;include/Ducklink/SerialDucklink.h;include/Ducklink/UDPDucklink.h;include/Ducklink/DucklinkBuffer.h")
if (CROSSCOMPILE_ARM)
set_target_properties(Ducklink PROPERTIES COMPILE_FLAGS "-Wall -Wextra -pedantic")
else()
set_target_properties(Ducklink PROPERTIES COMPILE_FLAGS "-Wall -Wextra -pedantic -Werror")
endif()
### Install
install(TARGETS Ducklink
EXPORT DucklinkTargets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
INCLUDES DESTINATION include
PUBLIC_HEADER DESTINATION include/Ducklink
)
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
DucklinkConfigVersion.cmake
VERSION ${PACKAGE_VERSION}
COMPATIBILITY AnyNewerVersion
)
install(EXPORT DucklinkTargets
FILE DucklinkTargets.cmake
DESTINATION lib/cmake/Ducklink
)
configure_file(cmake/DucklinkConfig.cmake.in DucklinkConfig.cmake @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/DucklinkConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/DucklinkConfigVersion.cmake"
DESTINATION lib/cmake/Ducklink
)