make[2]: *** 没有规则可制作目标“/home/.../src/viewer.cpp”,需求。 停止... recipe for target ‘.....‘failed问题解决

在学习PCLVisualizer可视化时,遇到了以下问题,浪费了我好多时间,希望可以帮到大家:

1.问题描述

1.1. 很多未定义

1. 2.没有规则可制作目标问题

 2.问题解决

分析:就是CMakeLists.txt有问题

针对该问题我的CMakeLists.txt主要内容如下:

 就额外加这两个find_package(PCL REQUIRED) 和

target_link_libraries(节点名 ${catkin_LIBRARIES} ${PCL_LIBRARIES} )就可以解决了。

package.xml文件按照自动生成的就行,不用加其他。

成功运行结果如下:

同时附上我的测试代码,比较简单,网上大多是一长串,不利于调试:

1.cloudViewer

#include<pcl/point_types.h>
#include<pcl/io/pcd_io.h>
#include<pcl/visualization/cloud_viewer.h>
 
 
int main() {
    pcl::PointCloud<pcl::PointXYZ>  cloud;
    // 加载点云

    pcl::io::loadPCDFile<pcl::PointXYZ>("/home/***/StuPro01/StuPCL02/src/viewer_pkg/data/myfilter.pcd",cloud);
    // 定义CloudViewer对象
    pcl::visualization::CloudViewer viewer ("Simple Cloud Viewer");
    // 显示点云
    viewer.showCloud(cloud.makeShared());
    while (!viewer.wasStopped ())
    {
    }
    return 0;
}

 2.PCLVisualizer

#include <iostream>
#include <thread>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>

 pcl::visualization::PCLVisualizer::Ptr customColourVis (pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud)
 {
    pcl::visualization::PCLVisualizer::Ptr viewer (new pcl::visualization::PCLVisualizer ("3D Viewer"));
    viewer->setBackgroundColor (0, 0, 0);
    pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color(cloud, 0, 255, 0);
    viewer->addPointCloud<pcl::PointXYZ> (cloud, single_color, "sample cloud");
    viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud");
    viewer->addCoordinateSystem (1.0);
    viewer->initCameraParameters ();
    return (viewer);
 }
int
main (int argc, char** argv)
{
    pcl::PointCloud<pcl::PointXYZ>::Ptr basic_cloud_ptr (new pcl::PointCloud<pcl::PointXYZ>);
    //pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
    pcl::io::loadPCDFile<pcl::PointXYZ>("/home/***/StuPro01/StuPCL02/src/viewer_pkg/data/myfilter.pcd",*basic_cloud_ptr);
    pcl::visualization::PCLVisualizer::Ptr viewer;
    viewer = customColourVis(basic_cloud_ptr);
    while (!viewer->wasStopped ())
    {
        viewer->spinOnce (100);
        boost::this_thread::sleep (boost::posix_time::microseconds (100000));
    }
}


版权声明:本文为qq_52852944原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。