PCL按书上例子,使用cmake编译pcl代码出错

问题遇到的现象和发生背景

按照给的CMakeLists和代码直接使用,没做修改,编译报错,环境是VS2019x64-cmake3.23-PCL1.12.1

问题相关代码,请勿粘贴截图

源代码

#include <pcl/point_types.h>
 #include <pcl/io/pcd_io.h>
 #include <pcl/kdtree/kdtree_flann.h>
 #include <pcl/filters/bilateral.h>
#include <pcl/search/impl/kdtree.hpp>

typedef pcl::PointXYZI PointT;

int
main (int argc, char*argv[])
 {
std::string incloudfile = argv[1];
std::string outcloudfile = argv[2];
float sigma_s = atof (argv[3]);
float sigma_r = atof (argv[4]);

// 读入点云文件
   pcl::PointCloud<PointT>::Ptr cloud (new pcl::PointCloud<PointT>);
pcl::io::loadPCDFile (incloudfile.c_str (), *cloud);

   pcl::PointCloud<PointT>outcloud;

// 建立kdtree
   pcl::KdTreeFLANN<PointT>::Ptr tree (new pcl::KdTreeFLANN<PointT>);

   pcl::BilateralFilter<PointT> bf;
   bf.setInputCloud (cloud);
   bf.setSearchMethod (tree);
   bf.setHalfSize (sigma_s);
   bf.setStdDev (sigma_r);
   bf.filter (outcloud);

// 保存滤波输出点云文件
pcl::io::savePCDFile (outcloudfile.c_str (), outcloud);
return (0);
 }


运行结果及报错内容

cmake中flann-dir找不到,代码中一个宏定义报错,一个转换报错

img

img

我的解答思路和尝试过的方法

使用网上的别人的简单例子编译是成功的,书上的例子因为这个转换无法通过

我想要达到的结果