Skip to content

Commit 589e1cc

Browse files
committed
Added FindLibUsb and FindTurboJPEG cmake files, to search for the respective libraries, instead of hardcoding in a sub depend folder.
Added FindGlew as the one shipped with cmake only works on linux and has no GLEW_ROOT_DIR to set in enviroment variables. Only testet on windows.
1 parent 2d15359 commit 589e1cc

File tree

4 files changed

+265
-18
lines changed

4 files changed

+265
-18
lines changed

examples/protonect/CMakeLists.txt

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,16 @@ FIND_PACKAGE(OpenCL)
4141
# dependencies
4242
FIND_PACKAGE(OpenCV REQUIRED)
4343

44-
# OpenCV
45-
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIR})
46-
47-
# LibUSB
48-
INCLUDE_DIRECTORIES("${MY_DIR}/../../depends/libusb/include/libusb-1.0/")
49-
LINK_DIRECTORIES("${MY_DIR}/../../depends/libusb/lib/")
50-
51-
# GLEW
52-
INCLUDE_DIRECTORIES("${MY_DIR}/../../depends/glew/include/")
53-
if (APPLE)
54-
LINK_DIRECTORIES("${MY_DIR}/../../depends/glew/lib/")
55-
else()
56-
LINK_DIRECTORIES("${MY_DIR}/../../depends/glew/lib64/")
57-
endif()
58-
ADD_DEFINITIONS(-DGLEW_MX -DGLEW_STATIC)
44+
FIND_PACKAGE(libusb REQUIRED)
45+
46+
FIND_PACKAGE(TurboJPEG REQUIRED)
47+
48+
FIND_PACKAGE(GLEW REQUIRED)
49+
50+
ADD_DEFINITIONS(-DGLEW_MX)
51+
52+
# Add includes
53+
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS} ${LibUSB_INCLUDE_DIR} ${GLEW_INCLUDE_DIR} ${TJPEG_INCLUDE_DIR})
5954

6055
# GLFW
6156
SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
@@ -75,6 +70,7 @@ endif()
7570
SET(RESOURCES_INC_FILE "${MY_DIR}/src/resources.inc")
7671

7772
SET(SOURCES
73+
7874
src/transfer_pool.cpp
7975
src/event_loop.cpp
8076

@@ -99,10 +95,11 @@ SET(SOURCES
9995
)
10096

10197
SET(LIBRARIES
102-
usb-1.0
10398
${OpenCV_LIBS}
104-
turbojpeg
99+
${LibUSB_LIBRARIES}
100+
${TJPEG_LIBRARY}
105101
${LIBFREENECT2_THREADING_LIBRARIES}
102+
${GLEW_LIBRARY}
106103
)
107104

108105
SET(RESOURCES
@@ -118,7 +115,6 @@ LIST(APPEND SOURCES
118115
)
119116

120117
LIST(APPEND LIBRARIES
121-
GLEWmx
122118
glfw
123119
${GLFW_LIBRARIES}
124120
)
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#
2+
3+
# Try to find GLEW library and include path.
4+
# Once done this will define
5+
#
6+
# GLEW_FOUND
7+
# GLEW_INCLUDE_DIR
8+
# GLEW_LIBRARY
9+
# GLEW_SOURCE
10+
#
11+
12+
include(FindPackageHandleStandardArgs)
13+
14+
if (WIN32)
15+
find_path( GLEW_INCLUDE_DIR
16+
NAMES
17+
GL/glew.h
18+
PATHS
19+
$ENV{GLEW_ROOT_DIR}/include
20+
DOC "The directory where GL/glew.h resides" )
21+
22+
if(ARCH STREQUAL "x86")
23+
find_library( GLEW_LIBRARY
24+
NAMES
25+
glew32mx glew32mxs
26+
PATHS
27+
"$ENV{GLEW_ROOT_DIR}/lib/Release MX/win32"
28+
"$ENV{GLEW_ROOT_DIR}/lib/Release MX/win32"
29+
DOC "The GLEW library")
30+
else()
31+
find_library( GLEW_LIBRARY
32+
NAMES
33+
glew32mx glew32mxs
34+
PATHS
35+
"$ENV{GLEW_ROOT_DIR}/lib/Release MX/x64"
36+
"$ENV{GLEW_ROOT_DIR}/lib/Release MX/x64"
37+
DOC "The GLEW library")
38+
endif()
39+
else(WIN32)
40+
find_path( GLEW_INCLUDE_DIR
41+
NAMES
42+
GL/glew.h
43+
PATHS
44+
$ENV{GLEW_ROOT_DIR}/include
45+
/usr/include
46+
/usr/local/include
47+
/sw/include
48+
/opt/local/include
49+
NO_DEFAULT_PATH
50+
DOC "The directory where GL/glew.h resides"
51+
)
52+
find_library( GLEW_LIBRARY
53+
NAMES
54+
GLEW glew
55+
PATHS
56+
$ENV{GLEW_ROOT_DIR}/lib
57+
/usr/lib64
58+
/usr/lib
59+
/usr/local/lib64
60+
/usr/local/lib
61+
/sw/lib
62+
/opt/local/lib
63+
NO_DEFAULT_PATH
64+
DOC "The GLEW library")
65+
endif ()
66+
67+
find_package_handle_standard_args(GLEW DEFAULT_MSG
68+
GLEW_INCLUDE_DIR
69+
GLEW_LIBRARY
70+
)
71+
72+
mark_as_advanced( GLEW_FOUND )
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
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_DIR: 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_DIR ${PKGCONFIG_LibUSB_INCLUDE_DIR} )
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_DIR
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_DIR )
47+
48+
if ( ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
49+
# LibUSB-Win32 binary distribution contains several libs.
50+
# Use the lib that got compiled with the same compiler.
51+
if ( MSVC )
52+
if ( ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x32" )
53+
set ( LibUSB_LIBRARY_PATH_SUFFIX_RELEASE win32/Release/dll )
54+
set ( LibUSB_LIBRARY_PATH_SUFFIX_DEBUG win32/Debug/dll )
55+
else ()
56+
set ( LibUSB_LIBRARY_PATH_SUFFIX_RELEASE x64/Release/dll )
57+
set ( LibUSB_LIBRARY_PATH_SUFFIX_DEBUG 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 ( LibUSB_LIBRARY_RELEASE
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_RELEASE}
74+
)
75+
76+
find_library ( LibUSB_LIBRARY_DEBUG
77+
NAMES
78+
libusb libusb-1.0 libusb-1.0d usb
79+
PATHS
80+
$ENV{ProgramFiles}/LibUSB-Win32
81+
$ENV{LibUSB_ROOT_DIR}
82+
PATH_SUFFIXES
83+
${LibUSB_LIBRARY_PATH_SUFFIX_DEBUG}
84+
)
85+
86+
set (LibUSB_LIBRARIES
87+
debug ${LibUSB_LIBRARY_DEBUG}
88+
optimized ${LibUSB_LIBRARY_RELEASE}
89+
)
90+
91+
if ( LibUSB_INCLUDE_DIR AND LibUSB_LIBRARIES )
92+
set ( LibUSB_FOUND true )
93+
endif ( LibUSB_INCLUDE_DIR AND LibUSB_LIBRARIES )
94+
endif ( PKGCONFIG_LIBUSB_FOUND )
95+
96+
if ( LibUSB_FOUND )
97+
set ( CMAKE_REQUIRED_INCLUDES "${LibUSB_INCLUDE_DIR}" )
98+
check_include_file ( usb.h LibUSB_FOUND )
99+
endif ( LibUSB_FOUND )
100+
101+
if ( LibUSB_FOUND )
102+
check_library_exists ( "${LibUSB_LIBRARIES}" usb_open "" LibUSB_FOUND )
103+
endif ( LibUSB_FOUND )
104+
105+
if ( NOT LibUSB_FOUND )
106+
if ( NOT LibUSB_FIND_QUIETLY )
107+
message ( STATUS "LibUSB not found, try setting LibUSB_ROOT_DIR environment variable." )
108+
endif ( NOT LibUSB_FIND_QUIETLY )
109+
if ( LibUSB_FIND_REQUIRED )
110+
message ( FATAL_ERROR "" )
111+
endif ( LibUSB_FIND_REQUIRED )
112+
endif ( NOT 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+
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)