完整的配库教程见:VisualStudio2019 配置点云库 PCL1.11.1
打开PCL的安装目录找到VTK-lib
文件夹
选中路径并输入cmd
按下Enter
键出现如下界面
然后输入:dir/b/on >list.txt
并按下回车键
这时打开你对应路劲的目录,多了一个list.txt
文件,里面存了你这个文件夹里所有链接库名字。
打开list.txt
文件,删除cmake
、list.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; }
打开PCL的安装目录找到lib
文件夹
选中路径并输入cmd
按下Enter
键出现如下界面
然后输入:dir/b/on >a_list.txt
并按下回车键
这时打开你对应路劲的目录,多了一个a_list.txt
文件,里面存了你这个文件夹里所有链接库名字。
打开a_list.txt
文件,删除a_list.txt
和pkgconfig
两行并保存(注意不要留下空白行)
由于每一个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; }