| 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 both shared and static library") |
| set(CMAKE_BUILD_TARGET "Both" CACHE STRING "" FORCE) |
| endif() |
| |
| set(libuvc_VERSION_MAJOR 0) |
| set(libuvc_VERSION_MINOR 0) |
| set(libuvc_VERSION_PATCH 6) |
| 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") |
| |
| find_package(PkgConfig) |
| pkg_check_modules(LIBUSB libusb-1.0) |
| |
| include(GNUInstallDirs) |
| |
| SET(CMAKE_C_FLAGS_DEBUG "-g -DUVC_DEBUGGING") |
| |
| 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_DIRS} |
| ) |
| |
| message(WARNING "libuvc will not support JPEG decoding.") |
| |
| 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" ) |
| endforeach() |
| |
| if(BUILD_UVC_SHARED) |
| if(JPEG_FOUND) |
| target_link_libraries (uvc ${JPEG_LINK_FLAGS}) |
| endif(JPEG_FOUND) |
| |
| target_link_libraries(uvc ${LIBUSB_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/${CMAKE_LIBRARY_ARCHITECTURE}" |
| ARCHIVE DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}" |
| 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/${CMAKE_LIBRARY_ARCHITECTURE}") |
| set(CONF_LIBRARY "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_LIBRARY_ARCHITECTURE}/${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" |
| ) |