简单编写CMakeLists.txt
1.创建cpp文件,创建CMakeLists.txt文件,build文件夹,以及1.pcd文件
2.直接编写readpcl.cpp文件
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <string>
using namespace std;
int main(int argc,char **argv)
{
string pcd_file="../1.pcd";
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::io::loadPCDFile(pcd_file,*cloud);
for(int i=0;i<cloud->points.size();i++)
{
cout<<cloud->points[i].x<<" "<<cloud->points[i].y<<" "<<cloud->points[i].z<<endl;
}
return 0;
}
3.(重点)开始编写CMakeLists.txt文件
常规操作
cmake_minimum_required(VERSION 2.8)//常规操作
project(readpcl)//常规操作
因为代码中#include <pcl/io/pcd_io.h>,所以需要通过include_directories包含pcl库。
可以选择直接包含pcl库的位置(就是不写find_package了,直接include_directories(pcl的位置)),也可以选择间接包含pcl库的位置(下面介绍这种方式)
为了找到pcl的位置,使用命令
locate pcl | grep camke
然后肉眼找xxxConfig.cmake文件
之后将xxx按本身大小写写入find_package,find_package就会返回库的位置(xxx_INCLUDE_DIRS)以及返回这个库所需要的依赖包(xxx_LIBRARIES)
通过打开cmake文件
sudo gedit xxxConfig.cmake文件的完整路径
可以看到xxx_INCLUDE_DIRS以及xxx_LIBRARIES的大小写写法,然后各自填入include_directories和target_link_libraries就可以了
find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
add_executable(readpcl readpcl.cpp)
target_link_libraries(readpcl ${PCL_LIBRARIES})
4. 之后就简单地进入build文件就可以编译运行了
cd build
cmake ..
make
./readpcl