2011-10-20 30 views
6

Tôi đã cố gắng chạy "hướng dẫn để bắt đầu" với các thư viện Kinect (http://nicolas.burrus.name/index.php/Research/KinectUseNestk) nhưng tôi tình cờ gặp một lỗi.CMAKE không thể tìm thấy OpenNI

Khi tôi cố gắng dòng sau trong CLI:

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. 

tôi nhận được lỗi sau:

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) 

Có ai có bất kỳ ý tưởng làm thế nào tôi có để giải quyết này? Tôi đã cài đặt OpenNI, nó được cài đặt tại D: \ Program Files \ OpenNI.

Trả lời

2

Bạn có thể thử thay đổi các tập tin CMakeLists.txt và thêm hoặc sửa đổi các dòng sau

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

Nếu không, hãy tìm một file có tên CMakeCache.txt bên trong thư mục mã nhị phân. Tìm OPENNI_INCLUDE_DIR và OPENNI_LIB_DIR, đặt đường dẫn bên phải và chạy lại cmake.

Nếu không ai trong số đó làm việc và bạn có thể chạy cmake-gui, hãy thử sử dụng nó thay vì lệnh cli và chỉ định thủ công các đường dẫn đó trong GUI.

Tôi hy vọng điều đó sẽ hữu ích!

5

Để tạo một dự án OpenNI với CMAKE, bạn có thể sử dụng công cụ cmakelists của mình. Nó hoạt động tốt. (Tôi cũng bao gồm NITE2, nhưng nếu bạn không cần chỉ cần xóa những dòng).

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) 

Và sau đó bạn cần phải liên kết các thư mục và libs tìm thấy:

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

Hãy chắc chắn rằng OPEN_NI_BIN, OPEN_NI_INCLUDE, biến môi trường OPEN_NI_INSTALL_PATH đều thiết lập và rằng họ trỏ đến đúng nơi, bởi vì cmake mô-đun kiểm tra OPEN_NI kiểm tra các giá trị đó. Tôi đã nhận được cùng một lỗi, nhưng trong trường hợp của tôi, đó là một vấn đề trộn 64 và 32 bit thư viện. Tôi đã xây dựng opencv với 32 bit trình biên dịch, nhưng OpenNI là 64 bit. Vì vậy, tôi gỡ bỏ cài đặt tất cả 64bit và chỉ còn 32 bit phiên bản, mà làm cho nó hoạt động.

Trân trọng! Daniel

0

phân phối openni2 tiêu biểu đã sau /OpenNI-Linux-Arm-2.2/OpenNIDevEnvironment tập tin

Nó đã được mô tả tất cả các biến cần thiết để biên dịch và liên kết:

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

Vì vậy, bạn cần xuất các biến này và sau đó chạy cmake với OpenNI2 được bật:

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

Một nơi nào đó trong kết quả cmake bạn sẽ thấy:

- OpenNI2: YES (ver 2.2.0, xây dựng 33)

Các vấn đề liên quan