2011-10-20 29 views
6

He estado intentando ejecutar el "tutorial para comenzar" con las bibliotecas de Kinect (http://nicolas.burrus.name/index.php/Research/KinectUseNestk) pero me encontré con un error.CMAKE no puede encontrar OpenNI

Cuando intento la línea siguiente en la línea de comandos:

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. 

me sale el siguiente error:

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) 

¿Alguien tiene alguna idea de lo que tengo que resolver esto? Instalé OpenNI, está instalado en D: \ Program Files \ OpenNI.

Respuesta

2

Se podría tratar de modificar el archivo CMakeLists.txt y añadir o modificar las siguientes líneas

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

De lo contrario, busque un archivo llamado CMakeCache.txt dentro de la carpeta binarios. Busque OPENNI_INCLUDE_DIR y OPENNI_LIB_DIR, establezca la ruta correcta y ejecute cmake nuevamente.

Si ninguno de ellos funciona, y puede ejecutar cmake-gui, intente utilizarlo en lugar del comando cli y especifique manualmente esas rutas en la GUI.

Espero que ayude!

5

Para compilar un proyecto OpenNI con CMAKE, puede hacerlo en sus cmakelists. Funciona bien. (También incluí NITE2, pero si no es necesario, simplemente elimine esas líneas).

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) 

Y más adelante es necesario enlazar los directorios y librerías encontrado:

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

Asegúrese OPEN_NI_BIN, OPEN_NI_INCLUDE, variables de entorno OPEN_NI_INSTALL_PATH está todo listo y que apunten al lugar correcto, porque el cmake El módulo que busca OPEN_NI verifica esos valores. Recibía el mismo error, pero en mi caso, era un problema mezclar bibliotecas de 64 y 32 bits. Estaba construyendo opencv con compiladores de 32 bits, pero OpenNI tenía 64 bits. Así que desinstalé todas las versiones de 64 bits y solo de 32 bits, lo que hizo que funcionara.

Saludos cordiales, Daniel

0

distribución openni2 típica tiene las siguientes /OpenNI-Linux-Arm-2.2/OpenNIDevEnvironment archivo

Se ha descrito todas las variables necesarias para compilar y enlazar:

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

Así que debe exportar estas variables y luego ejecutar el comando cmake con OpenNI2 habilitado:

$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 .. 

En algún lugar de resultado cmake, no debería ver:

- OpenNI2: Sí (ver 2.2.0, construir 33)

Cuestiones relacionadas