-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
86 lines (69 loc) · 3.51 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
cmake_minimum_required(VERSION 3.10)
project(Comm) # sets PROJECT_NAME variable
set(PROJECT_VERSION_STRING "1.0.0")
set(PROJECT_TARGET "Communication")
set(PROJECT_INCLUDE_PREFIX "comm")
set(CMAKE_CXX_STANDARD 17)
add_compile_options(-std=c++17 -pthread)
option(WITH_OPENCV "Build the code with opencv" OFF)
set(OPENCV_VERSION "" CACHE STRING "The opencv version to use in the project")
if (WIN32)
set(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES} wsock32 ws2_32)
else (WIN32)
set(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES} pthread)
endif (WIN32)
set(MASTER_LIBRARIES ${EXTERNAL_LIBRARIES})
if (WITH_OPENCV)
if (WIN32)
set(OpenCV_DIR "C:/Program Files (x86)/opencv/opencv_4.4.0")
endif (WIN32)
if ("${OPENCV_VERSION}" STREQUAL "")
find_package(OpenCV REQUIRED COMPONENTS highgui)
else ()
find_package(OpenCV ${OPENCV_VERSION} REQUIRED COMPONENTS highgui)
endif ()
include_directories(${OpenCV_INCLUDE_DIRS})
endif ()
include_directories(include)
set(UTILS_STUFF src/utils/NetworkIncludes.cpp src/utils/Buffer.cpp src/utils/SerializationHeader.cpp include/comm/utils/utils.hpp src/utils/NetworkData.cpp)
set(SOCKET_STUFF src/socket/SocketPartner.cpp src/socket/SocketType.cpp src/socket/Socket.cpp src/socket/utils.cpp)
set(COMMUNICATION_STUFF src/communication/Communication.cpp src/communication/TCPServer.cpp src/communication/Communicator.cpp)
set(DATA_STUFF src/data/MessageType.cpp src/data/messages.cpp src/data/CommunicationData.cpp src/data/CoordinateData.cpp src/data/ImageData.cpp src/data/StatusData.cpp src/data/dataUtils.cpp src/data/CommunicatorState.cpp src/data/DataCollection.cpp src/data/BytesData.cpp src/data/ImageEncodeData.cpp)
set(OPENCV_STUFF src/data/dataUtilsWithOpenCV.cpp src/data/DataCollectionWithOpenCV.cpp src/data/ImageDataWithOpenCV.cpp src/data/ImageEncodeDataWithOpenCV.cpp)
set(COMM_LIB_SHARED ${PROJECT_TARGET})
add_library(${COMM_LIB_SHARED} SHARED ${COMMUNICATION_STUFF} ${DATA_STUFF} ${SOCKET_STUFF} ${UTILS_STUFF})
target_link_libraries(${COMM_LIB_SHARED} ${MASTER_LIBRARIES})
target_include_directories(${COMM_LIB_SHARED}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
set(COMM_LIB "${PROJECT_TARGET}_static")
add_library(${COMM_LIB} ${COMMUNICATION_STUFF} ${DATA_STUFF} ${SOCKET_STUFF} ${UTILS_STUFF})
target_link_libraries(${COMM_LIB} ${MASTER_LIBRARIES})
target_include_directories(${COMM_LIB}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
if (WITH_OPENCV)
set(OPENCV_COMM_LIB_SHARED ${PROJECT_TARGET}_OpenCV)
add_library(${OPENCV_COMM_LIB_SHARED} SHARED ${OPENCV_STUFF})
target_link_libraries(${OPENCV_COMM_LIB_SHARED} ${COMM_LIB_SHARED} ${OpenCV_LIBS} ${MASTER_LIBRARIES})
target_include_directories(${OPENCV_COMM_LIB_SHARED}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
set(OPENCV_COMM_LIB "${PROJECT_TARGET}_OpenCV_static")
add_library(${OPENCV_COMM_LIB} ${OPENCV_STUFF})
target_link_libraries(${OPENCV_COMM_LIB} ${COMM_LIB} ${OpenCV_LIBS} ${MASTER_LIBRARIES})
target_include_directories(${OPENCV_COMM_LIB}
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
endif ()
set(MASTER_LIBRARIES ${OPENCV_COMM_LIB} ${COMM_LIB} ${MASTER_LIBRARIES})
add_subdirectory(tests)
include(cmake/installConfig.cmake)