-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
133 lines (124 loc) · 4.52 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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
cmake_minimum_required(VERSION 3.15.0)
project(
openev
DESCRIPTION "Extending OpenCV to event-based vision"
HOMEPAGE_URL https://github.com/raultapia/openev)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Git submodules
if(NOT EXISTS "${PROJECT_SOURCE_DIR}/third-party/libusb/config.h")
find_package(Git REQUIRED)
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
execute_process(COMMAND ${PROJECT_SOURCE_DIR}/third-party/libusb/autogen.sh WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/third-party/libusb)
endif()
# Add modules
option(BUILD_MODULE_ALGORITHMS "Build the algorithms module" ON)
option(BUILD_MODULE_CONTAINERS "Build the containers module" ON)
option(BUILD_MODULE_CORE "Build the core module" ON)
option(BUILD_MODULE_DEVICES "Build the devices module" ON)
option(BUILD_MODULE_READERS "Build the readers module" ON)
option(BUILD_MODULE_REPRESENTATIONS "Build the representations module" ON)
option(BUILD_MODULE_UTILS "Build the utils module" ON)
option(BUILD_EXAMPLES "Build examples" ON)
if(BUILD_MODULE_REPRESENTATIONS)
find_package(
OpenCV REQUIRED
COMPONENTS core highgui calib3d
OPTIONAL_COMPONENTS viz)
if(${OpenCV_viz_FOUND})
set(HAVE_VIZ 1)
else()
set(HAVE_VIZ 0)
endif()
else()
find_package(OpenCV REQUIRED COMPONENTS core highgui calib3d)
set(HAVE_VIZ 0)
endif()
configure_file("${CMAKE_SOURCE_DIR}/include/openev/options.hpp.in.cmake" "${CMAKE_SOURCE_DIR}/include/openev/options.hpp" @ONLY)
if(BUILD_MODULE_ALGORITHMS)
add_subdirectory(modules/algorithms)
endif()
if(BUILD_MODULE_CONTAINERS)
add_subdirectory(modules/containers)
endif()
if(BUILD_MODULE_CORE)
add_subdirectory(modules/core)
endif()
if(BUILD_MODULE_DEVICES)
add_subdirectory(modules/devices)
endif()
if(BUILD_MODULE_READERS)
add_subdirectory(modules/readers)
endif()
if(BUILD_MODULE_REPRESENTATIONS)
add_subdirectory(modules/representations)
endif()
if(BUILD_MODULE_UTILS)
add_subdirectory(modules/utils)
endif()
# Compile
add_library(openev INTERFACE)
if(BUILD_MODULE_ALGORITHMS)
target_link_libraries(openev INTERFACE oe_algorithms)
endif()
if(BUILD_MODULE_CONTAINERS)
target_link_libraries(openev INTERFACE oe_containers)
endif()
if(BUILD_MODULE_CORE)
target_link_libraries(openev INTERFACE oe_core)
endif()
if(BUILD_MODULE_DEVICES)
target_link_libraries(openev INTERFACE oe_devices)
endif()
if(BUILD_MODULE_READERS)
target_link_libraries(openev INTERFACE oe_readers)
endif()
if(BUILD_MODULE_REPRESENTATIONS)
target_link_libraries(openev INTERFACE oe_representations)
endif()
if(BUILD_MODULE_UTILS)
target_link_libraries(openev INTERFACE oe_utils)
endif()
target_include_directories(openev INTERFACE "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>" "$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>")
set_target_properties(openev PROPERTIES PUBLIC_HEADER "${PROJECT_SOURCE_DIR}/include/openev/openev.hpp;${PROJECT_SOURCE_DIR}/include/openev/options.hpp")
# Compile examples
if(BUILD_EXAMPLES AND HAVE_VIZ)
add_subdirectory(examples)
endif()
# Install
install(
TARGETS openev
EXPORT OpenEVTargets
PUBLIC_HEADER DESTINATION include/openev)
install(
EXPORT OpenEVTargets
FILE OpenEVTargets.cmake
DESTINATION lib/cmake/openev)
include(CMakePackageConfigHelpers)
set(OpenEV_LIBRARIES "")
if(BUILD_MODULE_ALGORITHMS)
list(APPEND OpenEV_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/openev/liboe_algorithms.so")
endif()
if(BUILD_MODULE_CONTAINERS)
list(APPEND OpenEV_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/openev/liboe_containers.so")
endif()
if(BUILD_MODULE_CORE)
list(APPEND OpenEV_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/openev/liboe_core.so")
endif()
if(BUILD_MODULE_DEVICES)
list(APPEND OpenEV_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/openev/liboe_devices.so")
list(APPEND OpenEV_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/openev/libcaer.so")
endif()
if(BUILD_MODULE_READERS)
list(APPEND OpenEV_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/openev/liboe_readers.so")
endif()
if(BUILD_MODULE_REPRESENTATIONS)
list(APPEND OpenEV_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/openev/liboe_representations.so")
endif()
if(BUILD_MODULE_UTILS)
list(APPEND OpenEV_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/openev/liboe_utils.so")
endif()
set(OpenEV_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/include")
set(OpenEV_LIBRARY_DIRS "${CMAKE_INSTALL_PREFIX}/lib/openev")
configure_package_config_file("OpenEVConfig.cmake.in" "${PROJECT_BINARY_DIR}/OpenEVConfig.cmake" INSTALL_DESTINATION "lib/cmake/openev")
install(FILES "${PROJECT_BINARY_DIR}/OpenEVConfig.cmake" DESTINATION lib/cmake/openev)