2011-10-20 14 views
6

私はKinectライブラリ(http://nicolas.burrus.name/index.php/Research/KinectUseNestk)で "チュートリアルを開始する"ことを試みてきましたが、私はつまずいたエラー。CMAKEがOpenNIを見つけられない

私は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にインストールされています。

答えて

2

あなたはバイナリフォルダ内CMakeCache.txtという名前のファイルを探し、それ以外の場合は

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

をCMakeLists.txtファイルを変更しようとすると、次の行を追加または変更できます。 OPENNI_INCLUDE_DIRとOPENNI_LIB_DIRを探し、正しいパスを設定して、再度cmakeを実行してください。

cmake-guiを実行することができない場合は、cliコマンドの代わりにこのコマンドを使用し、GUIでこれらのパスを手動で指定してみてください。

私はそれが助けてくれることを願っています!

5

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) 

以降、あなたが見つかりました。ディレクトリとLIBSをリンクする必要があります。

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

は確かOPEN_NI_BIN、OPEN_NI_INCLUDEを作るためにcmake、OPEN_NI_INSTALL_PATH環境変数は、すべての集合であり、彼らは適切な場所を指していることOPEN_NIをチェックするモジュールは、それらの値をチェックします。 私も同じエラーが出ていましたが、私の場合は64と32ビットのライブラリを混在させるのが問題でした。私は32ビットコンパイラでopencvを構築していましたが、OpenNIは64ビットでした。だから私はすべての64ビットをアンインストールし、それを動作させた32ビット版だけ残しました。

敬具、 ダニエル

0

典型的な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

(33を構築し、2.2.0のver)
関連する問題