-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
122 lines (103 loc) · 3.75 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
# Copyright (C) 2020 canhld@kaist.ac.kr
# SPDX-License-Identifier: Apache-2.0
#
cmake_minimum_required (VERSION 3.13)
project(something)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
if (CMAKE_BUILD_TYPE STREQUAL "")
message(STATUS "CMAKE_BUILD_TYPE not defined, 'Release' will be used")
set(CMAKE_BUILD_TYPE "Release")
endif()
if (NOT(BIN_FOLDER))
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
set (ARCH armv7l)
elseif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
set (ARCH intel64)
else()
set (ARCH ia32)
endif()
set (BIN_FOLDER ${ARCH})
endif()
if (NOT(PROJECT_DIR))
# in case if samples are built out of IE repo
set (PROJECT_DIR ${CMAKE_CURRENT_BINARY_DIR})
endif()
set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_DIR}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}/lib)
set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_DIR}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}/lib)
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_DIR}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE})
set (LIBRARY_OUTPUT_DIRECTORY ${PROJECT_DIR}/${BIN_FOLDER}/${CMAKE_BUILD_TYPE}/lib)
set (LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_DIRECTORY}/lib)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wno-deprecated-declarations -Wno-array-bounds") #treating warnings as errors
###################################### to use C++11
set (CMAKE_CXX_STANDARD 11)
set (CMAKE_CXX_STANDARD_REQUIRED ON)
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU)
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.0)
message(FATAL_ERROR "GCC version must be at least 5.0!")
endif()
set (CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
endif()
####################################
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
endif()
# Package manager
# OpenCV and Inference Engine come with openvino
if (INTEL_OPENVINO_DIR STREQUAL "")
set(INTEL_OPENVINO_DIR $ENV{INTEL_OPENVINO_DIR})
# message(STATUS "Looking for inference engine and opencv in ${INTEL_OPENVINO_DIR}")
endif()
if (NOT INTEL_OPENVINO_DIR STREQUAL "")
message(STATUS "Looking for inference engine and opencv in ${INTEL_OPENVINO_DIR}")
list(APPEND CMAKE_PREFIX_PATH ${INTEL_OPENVINO_DIR})
endif()
find_package(OpenCV REQUIRED)
find_package(InferenceEngine REQUIRED)
# CUDA
if (CUDA_INSTALL_DIR STREQUAL "")
set(CUDA_INSTALL_DIR $ENV{CUDA_INSTALL_DIR})
endif()
if (NOT CUDA_INSTALL_DIR STREQUAL "")
message(STATUS "Looking for CUDA in ${CUDA_INSTALL_DIR}")
list(APPEND CMAKE_PREFIX_PATH ${CUDA_INSTALL_DIR})
endif()
find_package(CUDA REQUIRED)
# TensorRT
if (TensorRT_ROOT STREQUAL "")
message(STATUS "Getting tensorrt from evironment variable")
set(TensorRT_ROOT $ENV{TensorRT_ROOT})
endif()
if (NOT TensorRT_ROOT STREQUAL "")
message(STATUS "Looking for TensorRT in ${TensorRT_ROOT}")
list(APPEND CMAKE_PREFIX_PATH ${TensorRT_ROOT})
endif()
find_package(TensorRT REQUIRED)
# GRPC & protobuf
set(Protobuf_MODULE_COMPATIBLE TRUE)
find_package(Protobuf CONFIG REQUIRED)
message(STATUS "Using protobuf ${Protobuf_VERSION}")
set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf)
find_package(gRPC CONFIG REQUIRED)
message(STATUS "Using gRPC ${gRPC_VERSION}")
set(_REFLECTION gRPC::grpc++_reflection)
set(_GRPC_GRPCPP gRPC::grpc++)
# Other libraries: boost, gflags, spdlog is managed by conan
message(STATUS "Install libraries with CONAN")
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
# Project components
add_subdirectory(server)
add_subdirectory(client)
# Install to root
set (CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR})
install(TARGETS ie_cpu_extension
RUNTIME DESTINATION bin
LIBRARY DESTINATION bin
ARCHIVE DESTINATION bin
)
# Testing
# add_subdirectory(test)
# enable_testing()
if (UNIX)
set (LIB_DL dl)
endif()