9393 set (LIBUSB_BUILD_SHARED_LIBS_DEFAULT OFF )
9494endif ()
9595
96+ include (CMakeDependentOption)
97+
9698option (LIBUSB_BUILD_SHARED_LIBS "Build Shared Libraries for libusb" ${LIBUSB_BUILD_SHARED_LIBS_DEFAULT} )
9799option (LIBUSB_BUILD_TESTING "Build Tests" OFF )
98100if (LIBUSB_BUILD_TESTING)
@@ -102,6 +104,8 @@ endif()
102104option (LIBUSB_BUILD_EXAMPLES "Build Example Applications" OFF )
103105
104106option (LIBUSB_INSTALL_TARGETS "Install libusb targets" ON )
107+ cmake_dependent_option(LIBUSB_EXPORT_INSTALL_TARGETS "Generate export files for installed targets" ON LIBUSB_INSTALL_TARGETS OFF )
108+
105109option (LIBUSB_TARGETS_INCLUDE_USING_SYSTEM "Make targets include paths System" ON )
106110
107111option (LIBUSB_ENABLE_LOGGING "Enable Logging" ON )
@@ -114,9 +118,20 @@ if(WIN32)
114118 option (LIBUSB_ENABLE_WINDOWS_HOTPLUG "Enable Windows hotplug support" OFF )
115119endif ()
116120
121+ #
122+
123+ if (LIBUSB_INSTALL_TARGETS)
124+ # to make sure all variables, like CMAKE_INSTALL_LIBDIR, are initialized
125+ include (GNUInstallDirs)
126+ endif ()
127+
117128set (LIBUSB_GEN_INCLUDES "${CMAKE_CURRENT_BINARY_DIR} /gen_include" )
118129generate_config_file()
119130
131+ #
132+ #
133+ #
134+
120135if (LIBUSB_BUILD_SHARED_LIBS)
121136 add_library (usb-1.0 SHARED)
122137else ()
@@ -147,12 +162,18 @@ target_include_directories(usb-1.0
147162 "${LIBUSB_ROOT} /os"
148163)
149164
150- if (LIBUSB_TARGETS_INCLUDE_USING_SYSTEM)
151- target_include_directories (usb-1.0 SYSTEM PUBLIC " ${LIBUSB_ROOT} " )
165+ if (LIBUSB_TARGETS_INCLUDE_USING_SYSTEM)
166+ set (LIBUSB_SYSTEM_FLAGS SYSTEM )
152167else ()
153- target_include_directories (usb-1.0 PUBLIC " ${LIBUSB_ROOT} " )
168+ set (LIBUSB_SYSTEM_FLAGS )
154169endif ()
155170
171+ target_include_directories (usb-1.0
172+ ${LIBUSB_SYSTEM_FLAGS} PUBLIC
173+ $<BUILD_INTERFACE:${LIBUSB_ROOT} >
174+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} /libusb-1.0>
175+ )
176+
156177if (WIN32 )
157178 target_sources (usb-1.0 PRIVATE
158179 "${LIBUSB_ROOT} /libusb-1.0.def"
@@ -248,6 +269,30 @@ if(LIBUSB_BUILD_EXAMPLES)
248269endif ()
249270
250271if (LIBUSB_INSTALL_TARGETS)
251- install (TARGETS usb-1.0)
252- install (FILES "${LIBUSB_ROOT} /libusb.h" DESTINATION "include/libusb-1.0" )
272+ install (FILES "${LIBUSB_ROOT} /libusb.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} /libusb-1.0" )
273+
274+ install (TARGETS usb-1.0
275+ EXPORT usb-1.0-targets
276+ )
277+
278+ if (LIBUSB_EXPORT_INSTALL_TARGETS)
279+ install (EXPORT usb-1.0-targets
280+ FILE usb-1.0-targets.cmake
281+ NAMESPACE libusb::
282+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/libusb"
283+ )
284+
285+ include (CMakePackageConfigHelpers)
286+
287+ write_basic_package_version_file(
288+ "${CMAKE_CURRENT_BINARY_DIR} /libusb-config-version.cmake"
289+ VERSION ${LIBUSB_VERSION}
290+ COMPATIBILITY SameMajorVersion
291+ )
292+
293+ install (FILES
294+ "${CMAKE_CURRENT_BINARY_DIR} /libusb-config-version.cmake"
295+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/libusb"
296+ )
297+ endif ()
253298endif ()
0 commit comments