79 lines
2.9 KiB
CMake
79 lines
2.9 KiB
CMake
###############################################################################
|
|
# Find OpenNI2
|
|
#
|
|
# find_package(OpenNI2)
|
|
#
|
|
# Variables defined by this module:
|
|
#
|
|
# OPENNI2_FOUND True if OpenNI2 was found
|
|
# OPENNI2_INCLUDE_DIRS The location(s) of OpenNI2 headers
|
|
# OPENNI2_LIBRARIES Libraries needed to use OpenNI2
|
|
# OPENNI2_DEFINITIONS Compiler flags for OpenNI2
|
|
|
|
find_package(PkgConfig QUIET)
|
|
pkg_check_modules(PC_OPENNI2 QUIET libopenni2)
|
|
|
|
set(OPENNI2_DEFINITIONS ${PC_OPENNI_CFLAGS_OTHER})
|
|
|
|
set(OPENNI2_SUFFIX)
|
|
if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(OPENNI2_SUFFIX 64)
|
|
endif()
|
|
|
|
find_path(OPENNI2_INCLUDE_DIR OpenNI.h
|
|
PATHS "$ENV{OPENNI2_INCLUDE${OPENNI2_SUFFIX}}" # Win64 needs '64' suffix
|
|
"/usr/include/openni2" # common path for deb packages
|
|
PATH_SUFFIXES include/openni2
|
|
)
|
|
|
|
find_library(OPENNI2_LIBRARY
|
|
NAMES OpenNI2 # No suffix needed on Win64
|
|
libOpenNI2 # Linux
|
|
PATHS "$ENV{OPENNI2_LIB${OPENNI2_SUFFIX}}" # Windows default path, Win64 needs '64' suffix
|
|
"$ENV{OPENNI2_REDIST}" # Linux install does not use a separate 'lib' directory
|
|
)
|
|
|
|
if(OPENNI2_INCLUDE_DIR AND OPENNI2_LIBRARY)
|
|
|
|
# Include directories
|
|
set(OPENNI2_INCLUDE_DIRS ${OPENNI2_INCLUDE_DIR})
|
|
unset(OPENNI2_INCLUDE_DIR)
|
|
mark_as_advanced(OPENNI2_INCLUDE_DIRS)
|
|
|
|
# Libraries
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
|
find_package(libusb REQUIRED)
|
|
set(OPENNI2_LIBRARIES ${OPENNI2_LIBRARY} libusb::libusb)
|
|
else()
|
|
set(OPENNI2_LIBRARIES ${OPENNI2_LIBRARY})
|
|
endif()
|
|
unset(OPENNI2_LIBRARY)
|
|
mark_as_advanced(OPENNI2_LIBRARIES)
|
|
|
|
set(OPENNI2_REDIST_DIR $ENV{OPENNI2_REDIST${OPENNI2_SUFFIX}})
|
|
mark_as_advanced(OPENNI2_REDIST_DIR)
|
|
|
|
endif()
|
|
|
|
if(EXISTS "${OPENNI2_INCLUDE_DIR}/OniVersion.h")
|
|
file(STRINGS "${OPENNI2_INCLUDE_DIR}/OniVersion.h" _contents REGEX "^#define[ \t]+ONI_VERSION_[A-Z]+[ \t]+[0-9]+")
|
|
if(_contents)
|
|
string(REGEX REPLACE ".*#define[ \t]+ONI_VERSION_MAJOR[ \t]+([0-9]+).*" "\\1" OPENNI2_VERSION_MAJOR "${_contents}")
|
|
string(REGEX REPLACE ".*#define[ \t]+ONI_VERSION_MINOR[ \t]+([0-9]+).*" "\\1" OPENNI2_VERSION_MINOR "${_contents}")
|
|
string(REGEX REPLACE ".*#define[ \t]+ONI_VERSION_MAINTENANCE[ \t]+([0-9]+).*" "\\1" OPENNI2_VERSION_PATCH "${_contents}")
|
|
string(REGEX REPLACE ".*#define[ \t]+ONI_VERSION_BUILD[ \t]+([0-9]+).*" "\\1" OPENNI2_VERSION_BUILD "${_contents}")
|
|
set(OPENNI2_VERSION "${OPENNI2_VERSION_MAJOR}.${OPENNI2_VERSION_MINOR}.${OPENNI2_VERSION_PATCH}.${OPENNI2_VERSION_BUILD}")
|
|
endif()
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(OpenNI2
|
|
FOUND_VAR OPENNI2_FOUND
|
|
REQUIRED_VARS OPENNI2_LIBRARIES OPENNI2_INCLUDE_DIRS
|
|
VERSION_VAR OPENNI2_VERSION
|
|
)
|
|
|
|
if(OPENNI2_FOUND)
|
|
message(STATUS "OpenNI2 found (version: ${OPENNI2_VERSION}, include: ${OPENNI2_INCLUDE_DIRS}, lib: ${OPENNI2_LIBRARIES})")
|
|
endif()
|