forked from pupil-labs/libuvc
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
134 lines (106 loc) · 4.09 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
134
cmake_minimum_required(VERSION 2.8)
project(libuvc)
if (NOT CMAKE_BUILD_TYPE)
message(STATUS "No build type selected, default to Release")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
endif ()
if (NOT CMAKE_BUILD_TARGET)
message(STATUS "No target type selected, default to shared library")
set(CMAKE_BUILD_TARGET "Shared" CACHE STRING "" FORCE)
endif()
set(libuvc_VERSION_MAJOR 0)
set(libuvc_VERSION_MINOR 0)
set(libuvc_VERSION_PATCH 7)
set(libuvc_VERSION ${libuvc_VERSION_MAJOR}.${libuvc_VERSION_MINOR}.${libuvc_VERSION_PATCH})
set(libuvc_DESCRIPTION "A cross-platform library for USB video devices")
set(libuvc_URL "https://github.com/ktossell/libuvc")
if(WIN32)
find_library(LIBUSB_LIBRARIES usb-1.0
PATHS /opt/local/lib)
find_path(LIBUSB_INCLUDE_DIR libusb-1.0/libusb.h
PATHS /opt/local/include)
else()
find_package(PkgConfig)
pkg_check_modules(LIBUSB libusb-1.0)
endif()
if(WIN32)
find_library(PTHREAD_LIBRARIES pthreadVC2
PATHS D:/install/pthreads-w32-2-9-1-release/lib/x64)
find_path(PTHREAD_INCLUDE_DIR pthread.h
PATHS D:/install/pthreads-w32-2-9-1-release/include)
SET(EXTRA_DEFS "-D_TIMESPEC_DEFINED")
add_definitions(${EXTRA_DEFS})
else()
include(GNUInstallDirs)
SET(CMAKE_C_FLAGS_DEBUG "-g -DUVC_DEBUGGING")
endif()
SET(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/lib/cmake/libuvc" CACHE PATH
"Installation directory for CMake files")
SET(SOURCES src/ctrl.c src/ctrl-gen.c src/device.c src/diag.c
src/frame.c src/init.c src/stream.c
src/misc.c)
include_directories(
${libuvc_SOURCE_DIR}/include
${libuvc_BINARY_DIR}/include
${LIBUSB_INCLUDE_DIR}
${PTHREAD_INCLUDE_DIR}
)
if(${CMAKE_BUILD_TARGET} MATCHES "Shared")
set(BUILD_UVC_SHARED TRUE)
elseif(${CMAKE_BUILD_TARGET} MATCHES "Static")
set(BUILD_UVC_STATIC TRUE)
elseif(${CMAKE_BUILD_TARGET} MATCHES "Both")
set(BUILD_UVC_SHARED TRUE)
set(BUILD_UVC_STATIC TRUE)
else()
message( FATAL_ERROR "Invalid build type ${CMAKE_BUILD_TARGET}" )
endif()
if(BUILD_UVC_SHARED)
add_library(uvc SHARED ${SOURCES})
list(APPEND UVC_TARGETS uvc)
endif()
if(BUILD_UVC_STATIC)
add_library(uvc_static STATIC ${SOURCES})
set_target_properties(uvc_static PROPERTIES OUTPUT_NAME uvc)
list(APPEND UVC_TARGETS uvc_static)
endif()
configure_file(include/libuvc/libuvc_config.h.in
${PROJECT_BINARY_DIR}/include/libuvc/libuvc_config.h @ONLY)
foreach(target_name ${UVC_TARGETS})
set_target_properties(${target_name} PROPERTIES
PUBLIC_HEADER "include/libuvc/libuvc.h;${libuvc_BINARY_DIR}/include/libuvc/libuvc_config.h" WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
set_target_properties(${target_name} PROPERTIES
VERSION ${libuvc_VERSION}
SOVERSION ${libuvc_VERSION_MAJOR})
endforeach()
if(BUILD_UVC_SHARED)
target_link_libraries(uvc ${LIBUSB_LIBRARIES} ${PTHREAD_LIBRARIES})
#add_executable(test src/test.c)
#target_link_libraries(test uvc ${LIBUSB_LIBRARIES} opencv_highgui
# opencv_core)
endif()
install(TARGETS ${UVC_TARGETS}
EXPORT libuvcTargets
LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib"
ARCHIVE DESTINATION "${CMAKE_INSTALL_PREFIX}/lib"
PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_PREFIX}/include/libuvc"
)
export(TARGETS ${UVC_TARGETS}
FILE "${PROJECT_BINARY_DIR}/libuvcTargets.cmake")
export(PACKAGE libuvc)
set(CONF_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include")
set(CONF_LIBRARY_DIR "${CMAKE_INSTALL_PREFIX}/lib")
set(CONF_LIBRARY "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}uvc${CMAKE_SHARED_LIBRARY_SUFFIX}")
configure_file(libuvcConfig.cmake.in ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/libuvcConfig.cmake)
configure_file(libuvcConfigVersion.cmake.in ${PROJECT_BINARY_DIR}/libuvcConfigVersion.cmake @ONLY)
configure_file(libuvc.pc.in ${PROJECT_BINARY_DIR}/libuvc.pc @ONLY)
install(FILES
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/libuvcConfig.cmake"
"${PROJECT_BINARY_DIR}/libuvcConfigVersion.cmake"
DESTINATION "${INSTALL_CMAKE_DIR}")
install(EXPORT libuvcTargets
DESTINATION "${INSTALL_CMAKE_DIR}")
install(FILES
"${PROJECT_BINARY_DIR}/libuvc.pc"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
)