CMAKE не может найти OpenNI - PullRequest
       39

CMAKE не может найти OpenNI

6 голосов
/ 20 октября 2011

Я пытался запустить «учебник для начала» с библиотеками 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.

Ответы [ 4 ]

5 голосов
/ 11 апреля 2013

Для создания проекта OpenNI с CMAKE вы можете записать это в своих 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 голосов
/ 27 октября 2011

Вы можете попытаться изменить файл CMakeLists.txt и добавить или изменить следующие строки

set(OPENNI_INCLUDE_DIR "D:/Program Files/OpenNI/Include")
set(OPENNI_LIB_DIR "D:/Program Files/OpenNI/Lib")

В противном случае найдите файл с именем CMakeCache.txt в папке binaries.Найдите OPENNI_INCLUDE_DIR и OPENNI_LIB_DIR, установите правильный путь и снова запустите cmake.

Если ничего из этого не работает, и вы можете запустить cmake-gui, попробуйте использовать его вместо команды cli и вручную указать эти путив графическом интерфейсе.

Надеюсь, это поможет!

0 голосов
/ 09 июня 2017

Типичный дистрибутив 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

Так что вам нужно экспортироватьэти переменные, а затем запустить cmake с включенным OpenNI2:

$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: ДА (версия 2.2.0, сборка 33)

0 голосов
/ 07 марта 2014

Убедитесь, что все переменные среды OPEN_NI_BIN, OPEN_NI_INCLUDE, OPEN_NI_INSTALL_PATH установлены и указывают на правильное место, потому что модуль cmake, проверяющий OPEN_NI, проверяет эти значения. Я получал ту же ошибку, но в моем случае это была проблема смешивания 64- и 32-битных библиотек. Я собирал opencv с 32-битными компиляторами, но OpenNI был 64-битным. Поэтому я удалил все 64-битные версии и оставил только 32-битные версии, что позволило ему работать.

С уважением, Daniel

...