find_package openni 出错解决方法

find_package openni 出错解决方法


http://blog.csdn.net/u012062327

1.ORB_SLAM2 实战中http://www.cnblogs.com/gaoxiang12/p/5161223.html,编译安装pangolin出现了一系列的oepnni相关问题。
解决方法:由于openni为optional dependencies 所以可以考虑注释掉 openni依赖,文件路径 pangolin/src/CmakeLists.txt
find_package openni 出错解决方法_第1张图片

2.用openni驱动kinect1时,find_package 无法找到openni package
原因分析:

find_package()包括 module模式和config模式

module 模式会在module 路径下查找FindOpenNI.cmake,首先搜索${CMAKE_MODULE_PATH}中的所有路径,然后搜索自带.cmake即 /share/cmake-2.8/Modules,本系统为/usr/share/cmake-2.8/Modules。如果没有找到文件,则进入config模式。

Config 模式,继续搜索config.cmake 或config.cmake文件,这两个文件是安装库自动安装的。

find_package(OpenNI),在module模式和config模式没有找到相关文件。

解决方法:

1) 新建kinect_test\cmake_modules\FindOpenNI.cmake 

CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) #CMAKE版本要求
MESSAGE(STATUS "USING BUNDLED FindOpenNI.cmake ...")
FIND_PATH(OPENNI_INCLUDE_DIR NAMES XnCppWrapper.h
    PATHS
    /usr/include/ni 
  )

FIND_LIBRARY(OPENNI_LIBRARY_DIR NAMES OpenNI
     PATHS
     /usr/lib
   )

2)编辑kinect_test\src\CmakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION2.8)#设定版本  
#增加opencv的依赖  
FIND_PACKAGE(OpenCV REQUIRED)  
  
#添加头文件和库文件   
LIST(APPENDCMAKE_MODULE_PATH${PROJECT_SOURCE_DIR}/cmake_modules)  
find_package(OpenNI REQUIRED)
IF(OPENNI_INCLUDE_DIRANDOPENNI_LIBRARY_DIR)  
MESSAGE(STATUS"FoundOpenNIlib")  
INCLUDE_DIRECTORIES(${OPENNI_INCLUDE_DIR}  )  
MESSAGE(STATUS"includediris"${OPENNI_INCLUDE_DIR})  
MESSAGE(STATUS"libdiris"${OPENNI_LIBRARY_DIR})  
ADD_EXECUTABLE(kinect_testkinect_test.cpp)  
TARGET_LINK_LIBRARIES(kinect_test  
    ${OpenCV_LIBS}  
    ${OPENNI_LIBRARY_DIR})    
ENDIF(OPENNI_INCLUDE_DIRANDOPENNI_LIBRARY_DIR) 


Reference:

http://www.ibm.com/developerworks/cn/linux/l-cn-cmake/

http://blog.csdn.net/dbzhang800/article/details/6329314




你可能感兴趣的:(slam,slam,cmake)