macos - मैक ओएस एक्स पर पीसीएल(प्वाइंट क्लाउड लाइब्रेरी) के साथ परियोजना का निर्माण



linker cmake (1)

मैक-बुक प्रो योसेमाइट (10.10.3) पर मैंने पीसीएल-ट्यूटोरियल (पीसीडी_लिटेक सीपीपी) चलने के लिए निम्नलिखित किया है।

CMakeLists.txt में

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(MY_GRAND_PROJECT)
find_package(PCL 1.8 REQUIRED COMPONENTS common io)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(pcd_write_test pcd_write.cpp)
target_link_libraries(pcd_write_test ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES})

चल रहे सीसीएमके .. निर्माण निर्देशिका में देता है

 CMAKE_BUILD_TYPE                                                              
 CMAKE_INSTALL_PREFIX             /usr/local                                   
 CMAKE_OSX_ARCHITECTURES                                                       
 CMAKE_OSX_DEPLOYMENT_TARGET                                                   
 CMAKE_OSX_SYSROOT                                                             
 DAVIDSDK_INCLUDE_DIR             DAVIDSDK_INCLUDE_DIR-NOTFOUND                
 DAVIDSDK_LIBRARY                 DAVIDSDK_LIBRARY-NOTFOUND                    
 EIGEN_INCLUDE_DIRS               /opt/local/include/eigen3                    
 ENSENSO_INCLUDE_DIR              ENSENSO_INCLUDE_DIR-NOTFOUND                 
 ENSENSO_LIBRARY                  ENSENSO_LIBRARY-NOTFOUND                     
 LIBUSB_1_INCLUDE_DIR             /opt/local/include                           
 LIBUSB_1_LIBRARY                 /opt/local/lib/libusb-1.0.dylib              
 OPENNI2_INCLUDE_DIRS             OPENNI2_INCLUDE_DIRS-NOTFOUND                
 OPENNI2_LIBRARY                  OPENNI2_LIBRARY-NOTFOUND                     
 OPENNI_INCLUDE_DIRS              /usr/include/ni                              
 OPENNI_LIBRARY                   /usr/lib/libOpenNI.dylib                     
 PCL_COMMON_INCLUDE_DIR           /usr/local/include/pcl-1.8 
 PCL_DIR                          /usr/local/share/pcl-1.8                     
 PCL_IO_INCLUDE_DIR               /usr/local/include/pcl-1.8                   
 PCL_OCTREE_INCLUDE_DIR           /usr/local/include/pcl-1.8

और मैं सफलतापूर्वक संकलित कोड

#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
int main(int argc, const char * argv[]) {
    //insert code here..
    pcl::PointCloud<pcl::PointXYZ> cloud;

    cloud.width    = 5;
    cloud.height   = 1;
    cloud.is_dense = false;
    cloud.points.resize (cloud.width * cloud.height);

    for (size_t i = 0; i < cloud.points.size (); ++i){
        cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
        cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
        cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
    }

    pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
    std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;

    for (size_t i = 0; i < cloud.points.size (); ++i)
        std::cerr << "    " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;

    return (0);

    std::cout << "Hello, World!\n";
    return 0;
}

... किसी के लिए इसकी उपयोगी आशा!

Nik

मैंने सभी निर्भरताएं और पूर्व-संकलित पीसीएल लाइब्रेरी को स्थापित किया है जैसा कि उन्होंने अपनी साइट पर सुझाई है।

मैं सब कुछ स्थापित करने के बाद इस ट्यूटोरियल के बाद मैं एक प्रोजेक्ट जेनरेट करना चाहता था।

'मेक' कमांड निष्पादित करने के बाद मुझे कई चेतावनियां और निम्न दो त्रुटियां मिलती हैं:

37 warnings generated.
Linking CXX executable pcd_write_test
Undefined symbols for architecture x86_64:
  "pcl::PCDWriter::writeASCII(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, sensor_msgs::PointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, int)", referenced from:
      pcl::PCDWriter::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, sensor_msgs::PointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, bool) in pcd_write.cpp.o
  "pcl::PCDWriter::writeBinary(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, sensor_msgs::PointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&)", referenced from:
      pcl::PCDWriter::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, sensor_msgs::PointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, bool) in pcd_write.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [pcd_write_test] Error 1
make[1]: *** [CMakeFiles/pcd_write_test.dir/all] Error 2
make: *** [all] Error 2

किसी को भी यह कैसे तय करने के लिए कोई सुझाव है?

मै मैक ओएस एक्स 10.9.4 का प्रयोग कर रहा हूं।