# Find the Vision Labs Liveness SDK & Face SDK. # Sets the usual variables expected for find_package scripts: # LSDK_INCLUDE_DIRS - headers location # LSDK_LIBRARIES - libraries to link against # LSDK_FOUND - true if Liveness SDK was found. # This is the directory where the Liveness SDK is located. # By default LSDKDIR environment variable value is taken. find_package(FaceEngineSDK REQUIRED) set(LSDK_ROOT "$ENV{LSDKDIR}" CACHE PATH "Vision Labs Liveness SDK root directory.") # Look for headers. find_path(LSDK_INCLUDE_DIRS NAMES lsdk/LivenessEngine.h lsdk/ILiveness.h HINTS $ENV{LSDKDIR} PATHS ${LSDK_ROOT} PATH_SUFFIXES include) # iOS framework have different header structure: not flower/header.h, but Headers/header.h. But when you link against framework it's name is used as prefix for includes, so you still use its includes as flower/header.h in c++ code. # Now the reason to set this variable is that its used for every other platform and its easier to fake it than rewrite most cmakelists if(IOS) set(LSDK_INCLUDE_DIRS ${LSDK_ROOT}/include) endif() #message(STATUS "LSDK [DEBUG]: LSDK_INCLUDE_DIRS = ${LSDK_INCLUDE_DIRS}.") # Determine compiler version and architecture. # ios has no architechture/compiler branching, because only can only use clang # and if you need multiple architechtures there still compiled into single universal binary if(NOT IOS) if(MSVC10) set(LSDK_COMPILER_NAME vs2010) elseif(MSVC11) set(LSDK_COMPILER_NAME vs2012) elseif(MSVC12) set(LSDK_COMPILER_NAME vs2013) elseif(MSVC14) set(LSDK_COMPILER_NAME vs2015) elseif(CMAKE_COMPILER_IS_GNUCXX) set(LSDK_COMPILER_NAME gcc4) elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(LSDK_COMPILER_NAME clang) else() message(SEND_ERROR "Unsupported compiler: ${LSDK_COMPILER_NAME}") endif() if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(LSDK_TARGET_NAME x64) else() set(LSDK_TARGET_NAME x86) endif() # What version of Face SDK to use. set(LSDK_LIB_PREFIX ${LSDK_COMPILER_NAME}/${LSDK_TARGET_NAME}) endif() if(IOS) # List of all SDK libraries. set(LSDK_LIB_NAMES LivenessEngine) else() # List of all SDK libraries. set(LSDK_LIB_NAMES LivenessEngineSDK) endif() if(IOS) set(LSDK_LIB_PATH_SUFFIX Frameworks) set(LSDK_BIN_PATH_SUFFIX Frameworks) else() set(LSDK_LIB_PATH_SUFFIX lib/${LSDK_LIB_PREFIX}) set(LSDK_BIN_PATH_SUFFIX bin/${LSDK_LIB_PREFIX}) endif() # Find optimized libraries. set(LSDK_LIB) foreach(LIB ${LSDK_LIB_NAMES}) set(LIB_PATH ${LIB}-NOTFOUND) find_library(LIB_PATH NAMES ${LIB} HINTS $ENV{LSDKDIR} PATHS ${LSDK_ROOT} PATH_SUFFIXES ${LSDK_LIB_PATH_SUFFIX} NO_DEFAULT_PATH ) list(APPEND LSDK_LIB ${LIB_PATH}) endforeach() # Find debug libraries (may be missing in your distribution). set(LSDK_LIBD) foreach(LIB ${LSDK_LIB_NAMES}) set(LIB_PATH ${LIB}-NOTFOUND) find_library(LIB_PATH NAMES ${LIB}d HINTS $ENV{LSDKDIR} PATHS ${LSDK_ROOT} PATH_SUFFIXES ${LSDK_LIB_PATH_SUFFIX} NO_DEFAULT_PATH ) list(APPEND LSDK_LIBD ${LIB_PATH}) endforeach() #link components if(LSDK_LIB AND LSDK_LIBD) set(LSDK_LIBRARIES optimized ${LSDK_LIB} debug ${LSDK_LIBD}) elseif(LSDK_LIBD) set(LSDK_LIBRARIES ${LSDK_LIBD}) message(STATUS "LSDK [WARN]: Release libraries were not found") elseif(LSDK_LIB) set(LSDK_LIBRARIES ${LSDK_LIB}) message(STATUS "LSDK [WARN]: Debug libraries were not found") endif() # Support the REQUIRED and QUIET arguments, and set LSDK_FOUND if found. include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(LSDK DEFAULT_MSG LSDK_LIBRARIES LSDK_INCLUDE_DIRS) # Don't show in GUI mark_as_advanced( LSDK_INCLUDE_DIRS LSDK_LIBRARIES LSDK_COMPILER_NAME LSDK_TARGET_NAME LSDK_LIB_PREFIX LSDK_LIB_NAMES LSDK_LIB_NAMESD LSDK_LIB LSDK_LIBD LIB_PATH )