2012-05-13 22 views
5

मैं उबंटू 12.04 मशीन का उपयोग कर रहा हूं और मुझे निम्न समस्या है: मैं सीएमके का उपयोग करके एक सी ++ फ़ाइल संकलित करने और बनाने की कोशिश कर रहा हूं, लेकिन जब मैं कमांड देता हूं ".. cmake" के बाद "बनाना" मैं त्रुटि मिलती है:सीएमके का उपयोग करके find_package (पीसीएल 1.2 आवश्यक) गलत पथ

cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 

project(pcl-openni-grabber) 

find_package(PCL 1.2 REQUIRED) 

include_directories(${PCL_INCLUDE_DIRS}) 
link_directories(${PCL_LIBRARY_DIRS}) 
add_definitions(${PCL_DEFINITIONS}) 

add_executable (pcl_openni_grabber pcl_openni_grabber.cpp) 
target_link_libraries (pcl_openni_grabber ${PCL_LIBRARIES}) 

जहां वातावरण चर PCL_INCLUDE_DIRS शामिल हैं::

pcl_openni_grabber.cpp:2:29: fatal error: pcl/point_cloud.h: No such file or directory compilation terminated.

अब मेरी CMakeLists.txt यह निम्नलिखित है

/usr/include/pcl-1.5 

अब समस्या को समझने के लिए 2 घंटे के काम के बाद, मैंने इसे find_package() कमांड में पाया। अभ्यास में जब मैं "cmake .." चलाता हूं तो यह पीसीएल (पॉइंट क्लाउड लाइब्रेरी) के पुस्तकालयों के लिए गलत पथ देता है। वास्तव में इस के उत्पादन में है "cmake ..":

-- The C compiler identification is GNU 
-- The CXX compiler identification is GNU 
-- Check for working C compiler: /usr/bin/gcc 
-- Check for working C compiler: /usr/bin/gcc -- works 
-- Detecting C compiler ABI info 
-- Detecting C compiler ABI info - done 
-- Check for working CXX compiler: /usr/bin/c++ 
-- Check for working CXX compiler: /usr/bin/c++ -- works 
-- Detecting CXX compiler ABI info 
-- Detecting CXX compiler ABI info - done 
-- checking for module 'eigen3' 
-- found eigen3, version 3.0.5 
-- Found eigen: /usr/include/eigen3 
-- Boost version: 1.46.1 
-- Found the following Boost libraries: 
-- system 
-- filesystem 
-- thread 
-- date_time 
-- iostreams 
-- checking for module 'flann' 
-- found flann, version 1.7.1 
-- Found Flann: /opt/ros/fuerte/lib/libflann_cpp_s.a 
-- checking for module 'openni-dev' 
-- found openni-dev, version 1.5.2.23~precise 
-- Found openni: /usr/lib/libOpenNI.so 
-- Found libusb-1.0: /usr/include 
-- Found qhull: /usr/lib/libqhull.so 
-- looking for PCL_COMMON 
-- Found PCL_COMMON: /opt/ros/fuerte/lib/libpcl_common.so 
-- looking for PCL_KDTREE 
-- Found PCL_KDTREE: /opt/ros/fuerte/lib/libpcl_kdtree.so 
-- looking for PCL_OCTREE 
-- Found PCL_OCTREE: /opt/ros/fuerte/lib/libpcl_octree.so 
-- looking for PCL_SEARCH 
-- Found PCL_SEARCH: /opt/ros/fuerte/lib/libpcl_search.so 
-- looking for PCL_SAMPLE_CONSENSUS 
-- Found PCL_SAMPLE_CONSENSUS: /opt/ros/fuerte/lib/libpcl_sample_consensus.so 
-- looking for PCL_FILTERS 
-- Found PCL_FILTERS: /opt/ros/fuerte/lib/libpcl_filters.so 
-- looking for PCL_TRACKING 
-- Found PCL_TRACKING: /opt/ros/fuerte/lib/libpcl_tracking.so 
-- looking for PCL_IO 
-- Found PCL_IO: /opt/ros/fuerte/lib/libpcl_io.so 
-- looking for PCL_FEATURES 
-- Found PCL_FEATURES: /opt/ros/fuerte/lib/libpcl_features.so 
-- looking for PCL_REGISTRATION 
-- Found PCL_REGISTRATION: /opt/ros/fuerte/lib/libpcl_registration.so 
-- looking for PCL_SEGMENTATION 
-- Found PCL_SEGMENTATION: /opt/ros/fuerte/lib/libpcl_segmentation.so 
-- looking for PCL_SURFACE 
-- Found PCL_SURFACE: /opt/ros/fuerte/lib/libpcl_surface.so 
-- looking for PCL_VISUALIZATION 
-- Found PCL_VISUALIZATION: /opt/ros/fuerte/lib/libpcl_visualization.so 
-- looking for PCL_KEYPOINTS 
-- Found PCL_KEYPOINTS: /opt/ros/fuerte/lib/libpcl_keypoints.so 
-- Found PCL: /usr/lib/libboost_system-mt.so;/usr/lib/libboost_filesystem-mt.so;/usr/lib/libboost_thread-mt.so;pthread;/usr/lib/libboost_date_time-mt.so;/usr/lib/libboost_iostreams-mt.so;optimized;/opt/ros/fuerte/lib/libpcl_common.so;debug;/opt/ros/fuerte/lib/libpcl_common.so;optimized;/opt/ros/fuerte/lib/libflann_cpp_s.a;debug;/opt/ros/fuerte/lib/libflann_cpp_s-gd.a;optimized;/opt/ros/fuerte/lib/libpcl_kdtree.so;debug;/opt/ros/fuerte/lib/libpcl_kdtree.so;optimized;/opt/ros/fuerte/lib/libpcl_octree.so;debug;/opt/ros/fuerte/lib/libpcl_octree.so;optimized;/opt/ros/fuerte/lib/libpcl_search.so;debug;/opt/ros/fuerte/lib/libpcl_search.so;optimized;/opt/ros/fuerte/lib/libpcl_sample_consensus.so;debug;/opt/ros/fuerte/lib/libpcl_sample_consensus.so;optimized;/opt/ros/fuerte/lib/libpcl_filters.so;debug;/opt/ros/fuerte/lib/libpcl_filters.so;optimized;/opt/ros/fuerte/lib/libpcl_tracking.so;debug;/opt/ros/fuerte/lib/libpcl_tracking.so;/usr/lib/libOpenNI.so;vtkCommon;vtkRendering;vtkHybrid;optimized;/opt/ros/fuerte/lib/libpcl_io.so;debug;/opt/ros/fuerte/lib/libpcl_io.so;optimized;/opt/ros/fuerte/lib/libpcl_features.so;debug;/opt/ros/fuerte/lib/libpcl_features.so;optimized;/opt/ros/fuerte/lib/libpcl_registration.so;debug;/opt/ros/fuerte/lib/libpcl_registration.so;optimized;/opt/ros/fuerte/lib/libpcl_segmentation.so;debug;/opt/ros/fuerte/lib/libpcl_segmentation.so;optimized;/usr/lib/libqhull.so;debug;/usr/lib/libqhull.so;optimized;/opt/ros/fuerte/lib/libpcl_surface.so;debug;/opt/ros/fuerte/lib/libpcl_surface.so;optimized;/opt/ros/fuerte/lib/libpcl_visualization.so;debug;/opt/ros/fuerte/lib/libpcl_visualization.so;optimized;/opt/ros/fuerte/lib/libpcl_keypoints.so;debug;/opt/ros/fuerte/lib/libpcl_keypoints.so (Required is at least version "1.2") 
-- Configuring done 
-- Generating done 
-- Build files have been written to: /home/jacopo/dev/university/prova/build 

आप देख सकते हैं, यह जो Synaptic पैकेज प्रबंधक के माध्यम से स्थापित किया गया है रोस (रोबोट ऑपरेटिंग सिस्टम) की एक विशेष पैकेज की PCL पुस्तकालय के लिए पथ रिटर्न "/ opt/ros" निर्देशिका पर। सही पीसीएल लाइब्रेरी और शामिल हैं "/usr/include/pcl.1.5" और "/ usr/lib" में हैं।

जब रोस अनइंस्टॉल करते हैं, find_package सही पथ देता है और मैं बिना किसी समस्या के संकलन और निर्माण करने में सक्षम हूं। लेकिन चूंकि मुझे विश्वविद्यालय के लिए आरओएस की आवश्यकता है और साथ ही मुझे सेमेक की ज़रूरत है, मैं कैसे स्थापित कर सकते हैं सेमेक काम कर रहे हैं? कोई उपाय?

उत्तर

7

आप-ट्यून कर सकते हैं find_package कमान में खोज पथ:

find_package(PCL 1.2 REQUIRED PATHS /usr NO_DEFAULT_PATH) 

इसमें कुछ समय जानवर बल हो सकता है; जब आप सीएमके पैकेज की खोज करते हैं तो आपको /opt को विचार से बाहर करने का बेहतर तरीका मिल सकता है।

एक तरफ के रूप में, आपको शायद link_directories का उपयोग नहीं करना चाहिए। दस्तावेज़ीकरण इंगित करता है कि इसकी आवश्यकता क्यों नहीं होती है।

+0

बहुत बहुत धन्यवाद फ्रेज़र, यह काम किया :) – yorsh