Skip to content

Commit 8ed37e5

Browse files
committed
Added FindLibUsb and FindTurboJPEG cmake files, to search for the respective libraries, instead of hardcoding in a sub depend folder.
Only testet on windows.
1 parent 3f58e13 commit 8ed37e5

File tree

3 files changed

+182
-16
lines changed

3 files changed

+182
-16
lines changed

examples/protonect/CMakeLists.txt

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,16 @@ SET(LIBRARY_OUTPUT_PATH ${MY_DIR}/lib)
2323
# dependencies
2424
FIND_PACKAGE(OpenCV REQUIRED)
2525

26-
# OpenCV
27-
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIR})
26+
FIND_PACKAGE(libusb REQUIRED)
2827

29-
# LibUSB
30-
INCLUDE_DIRECTORIES("${MY_DIR}/../../depends/libusb/include/libusb-1.0/")
31-
LINK_DIRECTORIES("${MY_DIR}/../../depends/libusb/lib/")
28+
FIND_PACKAGE(TurboJPEG REQUIRED)
3229

33-
# GLEW
34-
INCLUDE_DIRECTORIES("${MY_DIR}/../../depends/glew/include/")
35-
if (APPLE)
36-
LINK_DIRECTORIES("${MY_DIR}/../../depends/glew/lib/")
37-
else()
38-
LINK_DIRECTORIES("${MY_DIR}/../../depends/glew/lib64/")
39-
endif()
40-
ADD_DEFINITIONS(-DGLEW_MX -DGLEW_STATIC)
30+
FIND_PACKAGE(GLEW REQUIRED)
31+
32+
ADD_DEFINITIONS(-DGLEW_MX)
33+
34+
# Add includes
35+
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS} ${LibUSB_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS})
4136

4237
# GLFW
4338
SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
@@ -70,6 +65,7 @@ GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR}
7065
INCLUDE_DIRECTORIES("${MY_DIR}/include")
7166

7267
ADD_DEFINITIONS(-DRESOURCES_INC)
68+
7369
ADD_LIBRARY(freenect2 SHARED
7470
src/opengl.cpp
7571
src/transfer_pool.cpp
@@ -97,11 +93,11 @@ ADD_LIBRARY(freenect2 SHARED
9793
)
9894

9995
TARGET_LINK_LIBRARIES(freenect2
100-
usb-1.0
10196
${OpenCV_LIBS}
102-
turbojpeg
97+
${LibUSB_LIBRARIES}
98+
${TJPEG_LIBRARY}
10399
${LIBFREENECT2_THREADING_LIBRARIES}
104-
GLEWmx
100+
${GLEW_LIBRARY}
105101
glfw
106102
${GLFW_LIBRARIES}
107103
)
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# - Find libusb for portable USB support
2+
# This module will find libusb as published by
3+
# http://libusb.sf.net and
4+
# http://libusb-win32.sf.net
5+
#
6+
# It will use PkgConfig if present and supported, else search
7+
# it on its own. If the LibUSB_ROOT_DIR environment variable
8+
# is defined, it will be used as base path.
9+
# The following standard variables get defined:
10+
# LibUSB_FOUND: true if LibUSB was found
11+
# LibUSB_INCLUDE_DIRS: the directory that contains the include file
12+
# LibUSB_LIBRARIES: the library
13+
14+
include ( CheckLibraryExists )
15+
include ( CheckIncludeFile )
16+
17+
find_package ( PkgConfig )
18+
if ( PKG_CONFIG_FOUND )
19+
pkg_check_modules ( PKGCONFIG_LIBUSB libusb )
20+
endif ( PKG_CONFIG_FOUND )
21+
22+
if ( PKGCONFIG_LIBUSB_FOUND )
23+
set ( LibUSB_FOUND ${PKGCONFIG_LIBUSB_FOUND} )
24+
set ( LibUSB_INCLUDE_DIRS ${PKGCONFIG_LIBUSB_INCLUDE_DIRS} )
25+
foreach ( i ${PKGCONFIG_LIBUSB_LIBRARIES} )
26+
find_library ( ${i}_LIBRARY
27+
NAMES ${i}
28+
PATHS ${PKGCONFIG_LIBUSB_LIBRARY_DIRS}
29+
)
30+
if ( ${i}_LIBRARY )
31+
list ( APPEND LibUSB_LIBRARIES ${${i}_LIBRARY} )
32+
endif ( ${i}_LIBRARY )
33+
mark_as_advanced ( ${i}_LIBRARY )
34+
endforeach ( i )
35+
36+
else ( PKGCONFIG_LIBUSB_FOUND )
37+
find_path ( LibUSB_INCLUDE_DIRS
38+
NAMES
39+
libusb.h
40+
PATHS
41+
$ENV{ProgramFiles}/LibUSB-Win32
42+
$ENV{LibUSB_ROOT_DIR}
43+
PATH_SUFFIXES
44+
libusb
45+
)
46+
mark_as_advanced ( LibUSB_INCLUDE_DIRS )
47+
# message ( STATUS "LibUSB include dir: ${LibUSB_INCLUDE_DIRS}" )
48+
49+
if ( ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
50+
# LibUSB-Win32 binary distribution contains several libs.
51+
# Use the lib that got compiled with the same compiler.
52+
if ( MSVC )
53+
if ( ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x32" )
54+
set ( LibUSB_LIBRARY_PATH_SUFFIX lib/msvc )
55+
else ()
56+
message(x64)
57+
set ( LibUSB_LIBRARY_PATH_SUFFIX x64/Debug/dll )
58+
endif ()
59+
elseif ( BORLAND )
60+
set ( LibUSB_LIBRARY_PATH_SUFFIX lib/bcc )
61+
elseif ( CMAKE_COMPILER_IS_GNUCC )
62+
set ( LibUSB_LIBRARY_PATH_SUFFIX lib/gcc )
63+
endif ( MSVC )
64+
endif ( ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
65+
66+
find_library ( usb_LIBRARY
67+
NAMES
68+
libusb libusb-1.0 usb
69+
PATHS
70+
$ENV{ProgramFiles}/LibUSB-Win32
71+
$ENV{LibUSB_ROOT_DIR}
72+
PATH_SUFFIXES
73+
${LibUSB_LIBRARY_PATH_SUFFIX}
74+
)
75+
mark_as_advanced ( usb_LIBRARY )
76+
if ( usb_LIBRARY )
77+
set ( LibUSB_LIBRARIES ${usb_LIBRARY} )
78+
endif ( usb_LIBRARY )
79+
80+
if ( LibUSB_INCLUDE_DIRS AND LibUSB_LIBRARIES )
81+
set ( LibUSB_FOUND true )
82+
endif ( LibUSB_INCLUDE_DIRS AND LibUSB_LIBRARIES )
83+
endif ( PKGCONFIG_LIBUSB_FOUND )
84+
85+
if ( LibUSB_FOUND )
86+
set ( CMAKE_REQUIRED_INCLUDES "${LibUSB_INCLUDE_DIRS}" )
87+
check_include_file ( usb.h LibUSB_FOUND )
88+
# message ( STATUS "LibUSB: usb.h is usable: ${LibUSB_FOUND}" )
89+
endif ( LibUSB_FOUND )
90+
if ( LibUSB_FOUND )
91+
check_library_exists ( "${LibUSB_LIBRARIES}" usb_open "" LibUSB_FOUND )
92+
# message ( STATUS "LibUSB: library is usable: ${LibUSB_FOUND}" )
93+
endif ( LibUSB_FOUND )
94+
95+
if ( NOT LibUSB_FOUND )
96+
if ( NOT LibUSB_FIND_QUIETLY )
97+
message ( STATUS "LibUSB not found, try setting LibUSB_ROOT_DIR environment variable." )
98+
endif ( NOT LibUSB_FIND_QUIETLY )
99+
if ( LibUSB_FIND_REQUIRED )
100+
message ( FATAL_ERROR "" )
101+
endif ( LibUSB_FIND_REQUIRED )
102+
endif ( NOT LibUSB_FOUND )
103+
#message ( STATUS "LibUSB: ${LibUSB_FOUND}" )
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
include(CheckCSourceCompiles)
2+
3+
if(NOT TJPEG_INCLUDE_DIR)
4+
if(WIN32)
5+
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x32")
6+
set(DEFAULT_TJPEG_INCLUDE_DIR c:\\libjpeg-turbo\\include)
7+
else()
8+
set(DEFAULT_TJPEG_INCLUDE_DIR c:\\libjpeg-turbo64\\include)
9+
endif()
10+
else()
11+
set(DEFAULT_TJPEG_INCLUDE_DIR /opt/libjpeg-turbo/include)
12+
endif()
13+
else()
14+
set(DEFAULT_TJPEG_INCLUDE_DIR ${TJPEG_INCLUDE_DIR})
15+
unset(TJPEG_INCLUDE_DIR)
16+
unset(TJPEG_INCLUDE_DIR CACHE)
17+
endif()
18+
19+
find_path(TJPEG_INCLUDE_DIR turbojpeg.h
20+
DOC "TurboJPEG include directory (default: ${DEFAULT_TJPEG_INCLUDE_DIR})"
21+
HINTS ${DEFAULT_TJPEG_INCLUDE_DIR})
22+
if(TJPEG_INCLUDE_DIR STREQUAL "TJPEG_INCLUDE_DIR-NOTFOUND")
23+
message(FATAL_ERROR "Could not find turbojpeg.h in ${DEFAULT_TJPEG_INCLUDE_DIR}. If it is installed in a different place, then set TJPEG_INCLUDE_DIR accordingly.")
24+
else()
25+
message(STATUS "TJPEG_INCLUDE_DIR = ${TJPEG_INCLUDE_DIR}")
26+
endif()
27+
include_directories(${TJPEG_INCLUDE_DIR})
28+
29+
if(WIN32)
30+
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x32")
31+
set(DEFAULT_TJPEG_LIBRARY c:\\libjpeg-turbo\\lib\\turbojpeg.lib)
32+
else()
33+
set(DEFAULT_TJPEG_LIBRARY c:\\libjpeg-turbo64\\lib\\turbojpeg.lib)
34+
endif()
35+
else()
36+
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x32")
37+
set(DEFAULT_TJPEG_LIBRARY /usr/lib/libturbojpeg.so)
38+
39+
if(NOT EXISTS ${DEFAULT_TJPEG_LIBRARY})
40+
set(DEFAULT_TJPEG_LIBRARY /opt/libjpeg-turbo/lib64/libturbojpeg.so)
41+
endif()
42+
else()
43+
set(DEFAULT_TJPEG_LIBRARY /usr/lib/libturbojpeg.a)
44+
45+
if(NOT EXISTS ${DEFAULT_TJPEG_LIBRARY})
46+
set(DEFAULT_TJPEG_LIBRARY /opt/libjpeg-turbo/lib/libturbojpeg.a)
47+
endif()
48+
endif()
49+
endif()
50+
51+
set(TJPEG_LIBRARY ${DEFAULT_TJPEG_LIBRARY} CACHE PATH
52+
"TurboJPEG library path (default: ${DEFAULT_TJPEG_LIBRARY})")
53+
54+
if(WIN32)
55+
set(CMAKE_REQUIRED_DEFINITIONS -MT)
56+
endif()
57+
set(CMAKE_REQUIRED_INCLUDES ${TJPEG_INCLUDE_DIR})
58+
set(CMAKE_REQUIRED_LIBRARIES ${TJPEG_LIBRARY})
59+
check_c_source_compiles("#include <turbojpeg.h>\nint main(void) { tjhandle h=tjInitCompress(); return 0; }" TURBOJPEG_WORKS)
60+
set(CMAKE_REQUIRED_DEFINITIONS)
61+
set(CMAKE_REQUIRED_INCLUDES)
62+
set(CMAKE_REQUIRED_LIBRARIES)
63+
if(NOT TURBOJPEG_WORKS)
64+
message(FATAL_ERROR "Could not link with TurboJPEG library ${TJPEG_LIBRARY}. If it is installed in a different place, then set TJPEG_LIBRARY accordingly.")
65+
endif()
66+
67+
message(STATUS "TJPEG_LIBRARY = ${TJPEG_LIBRARY}")

0 commit comments

Comments
 (0)