cmake_minimum_required(VERSION 3.1) project(libusb VERSION 1.0.0 LANGUAGES C ) # Xcode and Visual Studio do not using CMAKE_BUILD_TYPE cache variable # so we use Release build type only with single configuration generators. if (NOT CMAKE_CONFIGURATION_TYPES) if(NOT CMAKE_BUILD_TYPE) message(STATUS "No build type selected, default to Release") set(CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE) endif() endif() set(libusb_DESCRIPTION "A cross-platform library for USB video devices") set(libusb_URL "https://github.com/libusb/libusb") set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) set(SOURCES libusb/core.c libusb/descriptor.c libusb/hotplug.c libusb/io.c libusb/sync.c libusb/strerror.c libusb/os/linux_usbfs.c libusb/os/events_posix.c libusb/os/threads_posix.c libusb/os/linux_netlink.c libusb/os/linux_android_jni.c ) add_library(libusb_static STATIC ${SOURCES}) set_target_properties(libusb_static PROPERTIES OUTPUT_NAME usb-1.0 # Exported name of target within namespace libusb EXPORT_NAME LibUSBstatic ) list(APPEND LibUSB_TARGETS libusb_static) add_library(LibUSB::LibUSBstatic ALIAS libusb_static) add_library(LibUSB::LibUSB ALIAS libusb_static) foreach(target_name IN LISTS LibUSB_TARGETS) target_include_directories(${target_name} PUBLIC # Different paths for includes for build and install phase supported # via INSTALL_INTERFACE and BUILD_INTERFACE generator expressions. $ $ $ $ $ $ $ $ ) target_link_libraries(${target_name} PRIVATE Threads::Threads ) set_target_properties(${target_name} PROPERTIES PUBLIC_HEADER "libusb/libusb.h;android/config.h" ) endforeach() include(GNUInstallDirs) set(CMAKE_INSTALL_CMAKEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/libusb) install( TARGETS ${LibUSB_TARGETS} EXPORT libusbTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libusb ) install(EXPORT libusbTargets FILE libusbTargets.cmake NAMESPACE LibUSB:: DESTINATION ${CMAKE_INSTALL_CMAKEDIR} ) include(CMakePackageConfigHelpers) write_basic_package_version_file(libusbConfigVersion.cmake COMPATIBILITY AnyNewerVersion ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libusbConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_CMAKEDIR} ) install(FILES libusbConfig.cmake DESTINATION ${CMAKE_INSTALL_CMAKEDIR} )