ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-12-24 09:33:48  阅读:338  来源: 互联网

标签:include lib 1.11 list C++ debug PCL release txt


目录

前言

完整的配库教程见: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;
}

在这里插入图片描述

标签:include,lib,1.11,list,C++,debug,PCL,release,txt
来源: https://blog.csdn.net/qq_36686437/article/details/121843580

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有