find_package openni 出错解决方法

来源:互联网 发布:ios微信多开软件 编辑:程序博客网 时间:2024/05/23 01:56

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


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

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

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

Config 模式,继续搜索<Name>config.cmake 或<low-case-name>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




0 0