首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMAKE找不到OpenNI

CMAKE找不到OpenNI
EN

Stack Overflow用户
提问于 2011-10-20 21:54:36
回答 4查看 9K关注 0票数 6

我一直在尝试运行Kinect库(http://nicolas.burrus.name/index.php/Research/KinectUseNestk)的“入门教程”,但我偶然发现了一个错误。

当我在CLI中尝试以下行时:

代码语言:javascript
复制
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..

我得到以下错误:

代码语言:javascript
复制
CMake Error at D:/Program Files/CMake 2.8/share/cmake-2.8/Modules/FindPackageHan
dleStandardArgs.cmake:91 (MESSAGE):
Could NOT find OpenNI (missing: OPENNI_LIBRARY OPENNI_INCLUDE_DIR)

Call Stack (most recent call first):
D:/Program Files/CMake 2.8/share/cmake-2.8/Modules/FindPackageHandleStandardAr
gs.cmake:252 (_FPHSA_FAILURE_MESSAGE)
nestk/cmake/FindOpenNI.cmake:51 (find_package_handle_standard_args)
nestk/cmake/find_nestk_deps.cmake:77 (FIND_PACKAGE)
build/nestk/UseEmbeddedNestk.cmake:23 (INCLUDE)
nestk/CMakeLists.txt:67 (INCLUDE)

有谁知道我要怎么解决这个问题吗?我已经安装了OpenNI,它安装在D:\Program Files\OpenNI。

EN

回答 4

Stack Overflow用户

发布于 2013-04-11 16:22:15

为了使用CMAKE修改OpenNI项目,你可以在你的cmakelist中写下这段代码。它工作得很好。(我还包含了NITE2,但如果您不需要,只需删除这些行)。

代码语言:javascript
复制
OPTION (ENABLE_OPENNI2_NITE2 ON)

IF( ENABLE_OPENNI2_NITE2 )
set(OPENNI2_DEFINITIONS ${PC_OPENNI_CFLAGS_OTHER})
FIND_LIBRARY( OPENNI2_LIBRARY
             NAMES OpenNI2
             HINTS ${PC_OPENNI2_LIBDIR} ${PC_OPENNI2_LIBRARY_DIRS} /usr/lib
             PATHS "$ENV{PROGRAMFILES}/OpenNI2/Lib${OPENNI2_SUFFIX}" "$ENV{PROGRAMW6432}/OpenNI2/Lib${OPENNI2_SUFFIX}" "$ENV{PROGRAMW6432}/OpenNI2"
             PATH_SUFFIXES lib lib64
)
FIND_PATH( OPENNI2_INCLUDE_DIR OpenNI.h
          HINTS ${PC_OPENNI2_INCLUDEDIR} ${PC_OPENNI2_INCLUDE_DIRS} 
                  /usr/include/openni2 /usr/include/ni2
                  PATHS "$ENV{PROGRAMFILES}/OpenNI2/include" "$ENV{PROGRAMW6432}/OpenNI2/include"
          PATH_SUFFIXES openni2 ni2)

FIND_LIBRARY( NITE2_LIBRARY
             NAMES NiTE2
             HINTS ${PC_OPENNI2_LIBDIR} ${PC_OPENNI2_LIBRARY_DIRS} /usr/lib
             PATHS "$ENV{PROGRAMFILES}/PrimeSense/NiTE2/lib${OPENNI2_SUFFIX}" "$ENV{PROGRAMW6432}/PrimeSense/NiTE2/lib${OPENNI2_SUFFIX}"
             PATH_SUFFIXES lib
)
FIND_PATH( NITE2_INCLUDE_DIR NiTE.h
          HINTS ${PC_OPENNI2_INCLUDEDIR} ${PC_OPENNI2_INCLUDE_DIRS} /usr/include/openni2 /usr/include/nite2
          PATHS "$ENV{PROGRAMFILES}/PrimeSense/NiTE2/include" "$ENV{PROGRAMW6432}/PrimeSense/NiTE2/include"
          PATH_SUFFIXES openni2         
)
ENDIF( ENABLE_OPENNI2_NITE2 )

然后,您需要链接找到的目录和库:

代码语言:javascript
复制
link_directories( ${OPENNI2_LIBRARY} ${NITE2_LIBRARY} )
INCLUDE_DIRECTORIES( ${OPENNI2_INCLUDE_DIR} ${NITE2_INCLUDE_DIR} )
target_link_libraries( project ${OPENNI2_LIBRARY} ${NITE2_LIBRARY} )
票数 6
EN

Stack Overflow用户

发布于 2011-10-27 19:02:26

您可以尝试修改CMakeLists.txt文件,并添加或修改以下行

代码语言:javascript
复制
set(OPENNI_INCLUDE_DIR "D:/Program Files/OpenNI/Include")
set(OPENNI_LIB_DIR "D:/Program Files/OpenNI/Lib")

否则,在二进制文件文件夹中查找名为CMakeCache.txt的文件。查找OPENNI_INCLUDE_DIR和OPENNI_LIB_DIR,设置正确的路径,然后再次运行cmake。

如果这些都不起作用,并且您可以运行cmake- GUI,请尝试使用cmake-GUI而不是cli命令,并在GUI中手动指定这些路径。

我希望它能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2014-03-07 05:37:01

确保OPEN_NI_BIN、OPEN_NI_INCLUDE、OPEN_NI_INSTALL_PATH环境变量都已设置,并且它们指向正确的位置,因为检查OPEN_NI的cmake模块会检查这些值。我得到了同样的错误,但在我的例子中,这是一个混合64位和32位库的问题。我用32位编译器构建opencv,但OpenNI是64位的。所以我卸载了所有的64位版本,只留下了32位版本,这样它就可以工作了。

问候你,大牛

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7837006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档