C/C++教程

C++获取PCL 1.11.1的附加依赖项

本文主要是介绍C++获取PCL 1.11.1的附加依赖项,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

  • 前言
  • 一、半自动获取
    • 1、获取VTK的依赖项
    • 2、获取PCL的依赖项
  • 二、自动获取

前言

完整的配库教程见:VisualStudio2019 配置点云库 PCL1.11.1

一、半自动获取

1、获取VTK的依赖项

  打开PCL的安装目录找到VTK-lib文件夹
在这里插入图片描述
选中路径并输入cmd
在这里插入图片描述
按下Enter键出现如下界面
在这里插入图片描述
然后输入:dir/b/on >list.txt 并按下回车键
在这里插入图片描述

  这时打开你对应路劲的目录,多了一个list.txt文件,里面存了你这个文件夹里所有链接库名字。
在这里插入图片描述
  打开list.txt文件,删除cmakelist.txt两行并保存(注意不要留下空白行)
在这里插入图片描述
在这里插入图片描述

  由于每一个Debug版本和Release版本的链接库是挨在一起的。写一个读取文档并对其分别保存就行了。
具体代码如下:(主要功能是读取一个txt文件,将其中奇数行和偶数行单独输出到新的txt文档。)

#include <iostream>
#include <string>
#include <fstream> 

using namespace std;

int main()
{
	ifstream txtfile;       // 打开读取的文件
	ofstream release, debug;// 保存的文件
	string line;
	
	txtfile.open("list.txt", ios::in);
	release.open("release附加依赖项.txt", ios::app);
	debug.open("debug附加依赖项.txt", ios::app);

	int index = 0;               // 用于判断奇偶
	while (!txtfile.eof())       // 若未到文件结束一直循环
	{
		getline(txtfile, line);  // 一行一行读取
		
		if (index % 2 == 0)      // 判断除以2的余数,即为奇偶的判断
		{
			release << line << endl;
		}
		else
		{
			debug << line << endl;
		}
		index++;
	}
	//关闭文件
	txtfile.close();   
	release.close();
	debug.close();

	return 0;
}

2、获取PCL的依赖项

  打开PCL的安装目录找到lib文件夹

在这里插入图片描述
在这里插入图片描述
选中路径并输入cmd
在这里插入图片描述

按下Enter键出现如下界面
在这里插入图片描述

然后输入:dir/b/on >a_list.txt 并按下回车键

在这里插入图片描述

  这时打开你对应路劲的目录,多了一个a_list.txt文件,里面存了你这个文件夹里所有链接库名字。
打开a_list.txt文件,删除a_list.txtpkgconfig两行并保存(注意不要留下空白行)

在这里插入图片描述

  由于每一个Debug版本和Release版本的链接库是挨在一起的。写一个读取文档并对其分别保存就行了。
具体代码如下:(主要功能是读取一个txt文件,将其中奇数行和偶数行单独输出到新的txt文档。)

#include <iostream>
#include <string>
#include <fstream> 

using namespace std;

int main()
{
	ifstream txtfile;       // 打开读取的文件
	ofstream release, debug;// 保存的文件
	string line;
	
	txtfile.open("a_list.txt", ios::in);
	release.open("pcl_release附加依赖项.txt", ios::app);
	debug.open("pcl_debug附加依赖项.txt", ios::app);

	int index = 0;               // 用于判断奇偶
	while (!txtfile.eof())       // 若未到文件结束一直循环
	{
		getline(txtfile, line);  // 一行一行读取
		
		if (index % 2 == 0)      // 判断除以2的余数,即为奇偶的判断
		{
			release << line << endl;
		}
		else
		{
			debug << line << endl;
		}
		index++;
	}
	//关闭文件
	txtfile.close();   
	release.close();
	debug.close();

	return 0;
}

  将release附加依赖项.txt中的内容复制粘贴进pcl_release附加依赖项.txt即可获取Release版本的完整附加依赖项,Debug版本的获取方式也是如此。

二、自动获取

  本代码适用于自动获取PCL1.11.1的附加依赖项,至于其他版本PCL的依赖项能否使用就不知道了。

#include <io.h>
#include <vector>
#include <string>
#include <fstream>
#include <iostream>

using namespace std;

#pragma region // 从文件夹中读取lib文件
vector<string>batchFetchingLib(string& folder_path)
{
	string filename_suffix = "/*lib"; // lib文件的文件名后缀(.lib)
	vector<string>files;
	struct _finddata_t fileinfo;
	intptr_t handle;
	handle = _findfirst((folder_path + filename_suffix).data(), &fileinfo);
	if (handle == -1)
	{
		printf("输入的路径有错误");
		exit(-1);
	}
	else
	{
		files.push_back(fileinfo.name);

		while (_findnext(handle, &fileinfo) == 0)
		{
			if (strcmp(fileinfo.name, ".") == 0 || strcmp(fileinfo.name, "..") == 0)
				continue;
			files.push_back(fileinfo.name);
		}
	}
	_findclose(handle);

	return files;
}
#pragma endregion

int main()
{
	string pcl_lib_path("D://PCL 1.11.1//lib");                // 读取lib文件的路径
	string vtk_lib_path("D://PCL 1.11.1//3rdParty//VTK//lib"); // 读取VTK-lib文件的路径

	vector<string>PCL = batchFetchingLib(pcl_lib_path);        // 获取lib文件名
	vector<string>VTK = batchFetchingLib(vtk_lib_path);        // 获取VTK-lib文件名

	ofstream release, debug;// 保存的文件
	release.open("PCL1.11.1_Release附加依赖项.txt", ios::app);
	debug.open("PCL1.11.1_Debug附加依赖项.txt", ios::app);

	for (size_t i = 0; i < PCL.size(); ++i)
	{
		(i % 2 == 0) ? release << PCL[i] << endl : debug << PCL[i] << endl;
	}

	for (size_t i = 0; i < VTK.size(); ++i)
	{
		(i % 2 != 0) ? release << VTK[i] << endl : debug << VTK[i] << endl;
	}

	release.close();
	debug.close();

	cout << "附加依赖项获取完毕!!!" << endl;
	
	return 0;
}

在这里插入图片描述

这篇关于C++获取PCL 1.11.1的附加依赖项的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!