【问题标题】:CMAKE can't find OpenNICMAKE 找不到 OpenNI
【发布时间】:2011-12-11 19:52:18
【问题描述】:

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

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

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..

我收到以下错误:

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。

【问题讨论】:

    标签: cmake rgb kinect openni


    【解决方案1】:

    要使用 CMAKE 构建 OpenNI 项目,您可以将其写入您的 cmakelists。它工作正常。 (我还包括了 NITE2,但如果您不需要,只需删除这些行)。

    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 )
    

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

    link_directories( ${OPENNI2_LIBRARY} ${NITE2_LIBRARY} )
    INCLUDE_DIRECTORIES( ${OPENNI2_INCLUDE_DIR} ${NITE2_INCLUDE_DIR} )
    target_link_libraries( project ${OPENNI2_LIBRARY} ${NITE2_LIBRARY} )
    

    【讨论】:

      【解决方案2】:

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

      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,请尝试使用它而不是 cli 命令并在 GUI 中手动指定这些路径。

      希望对你有帮助!

      【讨论】:

        【解决方案3】:

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

        亲切的问候, 丹尼尔

        【讨论】:

          【解决方案4】:

          典型的 openni2 发行版有以下文件 /OpenNI-Linux-Arm-2.2/OpenNIDevEnvironment

          它已经描述了编译和链接所需的所有变量:

          export OPENNI2_INCLUDE=/opt/cbox/OpenNI-Linux-Arm-2.2/Include
          export OPENNI2_REDIST=/opt/cbox/OpenNI-Linux-Arm-2.2/Redist
          

          所以你需要导出这些变量,然后在启用 OpenNI2 的情况下运行 cmake:

          $export OPENNI2_INCLUDE=/opt/cbox/OpenNI-Linux-Arm-2.2/Include
          $export OPENNI2_REDIST=/opt/cbox/OpenNI-Linux-Arm-2.2/Redist
          $cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_OPENNI2=ON  ..
          

          你应该在 cmake 结果的某个地方看到:

          -- OpenNI2: YES (ver 2.2.0, build 33)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-11-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-01-19
            • 1970-01-01
            • 2016-04-14
            相关资源
            最近更新 更多