2011-10-20 24 views
6

Ho cercato di eseguire il "tutorial per iniziare" con le librerie Kinect (http://nicolas.burrus.name/index.php/Research/KinectUseNestk) ma mi sono imbattuto in un errore.CMAKE non riesce a trovare OpenNI

Quando provo la seguente riga nella CLI:

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. 

ottengo il seguente errore:

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) 

Qualcuno ha qualche idea di come devo risolvere questo problema? Ho installato OpenNI, è installato su D: \ Programmi \ OpenNI.

risposta

2

Si potrebbe provare a modificare il file CMakeLists.txt e aggiungere o modificare le seguenti righe

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

In caso contrario, cercare un file chiamato CMakeCache.txt all'interno della cartella binari. Cerca OPENNI_INCLUDE_DIR e OPENNI_LIB_DIR, imposta il percorso corretto ed esegui di nuovo cmake.

Se nessuno di questi funziona ed è possibile eseguire cmake-gui, provare a utilizzarlo al posto del comando cli e specificare manualmente tali percorsi nella GUI.

Spero che aiuti!

5

Per la biulding di un progetto OpenNI con CMAKE è possibile eseguire il cablaggio nei vostri centralinisti. Funziona bene. (Ho anche incluso NITE2, ma se non hai bisogno di eliminare quelle righe).

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) 

E più tardi è necessario collegare le directory e librerie trovati:

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

Assicurarsi OPEN_NI_BIN, OPEN_NI_INCLUDE, le variabili di ambiente OPEN_NI_INSTALL_PATH sono tutti insieme e che puntano al posto giusto, perché il cmake il modulo che controlla che OPEN_NI controlli quei valori. Stavo ricevendo lo stesso errore, ma nel mio caso, si trattava di un problema nel mixare librerie a 64 e 32 bit. Stavo costruendo opencv con compilatori a 32 bit, ma OpenNI era a 64 bit. Così ho disinstallato tutto a 64 bit e lasciato solo le versioni a 32 bit, il che ha funzionato.

Cordiali saluti, Daniel

0

distribuzione openni2 tipico ha le seguenti /OpenNI-Linux-Arm-2.2/OpenNIDevEnvironment di file

E ha descritto tutte le variabili necessarie per compilare e linkare:

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

Quindi è necessario esportare queste variabili e quindi eseguire il cmake con OpenNI2 abilitato:

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

Da qualche parte nel risultato cmake si dovrebbe vedere:

- OpenNI2: SI (ver 2.2.0, costruire 33)