一、VScode配置boost库 遇到的问题和解决方法
装boost库是为了用其中的Boost Graph Library
1、windows预处理文件点击无反应
如下图在官网(https://www.boost.org/users/download/)下载boost库文件解压后得到的文件夹
win下两种格式的压缩包都行
booststrap.bat文件我双击无法运行,看有评论说需要安装visual studio之后就能正常运行了,我装完VS之后果然可以正常运行了;
然后在boost文件夹下启动cmd,执行 “.\b2.exe toolset=gcc”;
运行完成之后生成bin.v2和stage两个文件夹;
然后需要进行两个移动文件的操作:
(1)、将boost文件夹下的staget文件夹下的lib文件夹下的库放到mingw的文件夹下x86_64-w64-mingw32的文件夹下的lib文件夹内。
我的目录就是从”D:\Software\cpp_package\boost_1_85_0\stage\lib”复制到”D:\Software\mingw64\x86_64-w64-mingw32\lib”。
(2)、把boost文件夹下拷贝到x86_64-w64-mingw32的include文件夹下,也就是从”D:\Software\cpp_package\boost_1_85_0”拷贝到“D:\Software\mingw64\x86_64-w64-mingw32\include”。
2、VScode运行显示找不到boost包
完成之后我在VS里运行下列示例代码已经可以运行了,但vscode仍然出错;
#include <iostream>
#include <vector>
#include <limits>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/graph_utility.hpp>
using namespace boost;
// 定义图的类型
typedef adjacency_list<vecS, vecS, undirectedS, no_property, property<edge_weight_t, double>> Graph;
typedef graph_traits<Graph>::vertex_descriptor Vertex;
typedef graph_traits<Graph>::edge_descriptor Edge;
int main() {
Graph test_graph;
// 添加节点和边及其权重
add_edge(0, 1, 1.0, test_graph);
add_edge(0, 2, 2.0, test_graph);
add_edge(1, 2, 3.0, test_graph);
add_edge(1, 3, 4.0, test_graph);
add_edge(2, 3, 5.0, test_graph);
add_edge(2, 4, 6.0, test_graph);
add_edge(3, 4, 7.0, test_graph);
// 打印图的边和权重
property_map<Graph, edge_weight_t>::type weightmap = get(edge_weight, test_graph);
for (auto e : make_iterator_range(edges(test_graph))) {
std::cout << "Edge: (" << source(e, test_graph) << ", " << target(e, test_graph) << ") "
<< "Weight: " << weightmap[e] << std::endl;
}
return 0;
}
VScode仍然出错,需要在tasks.json文件中args下添加boost的路径,则vscode也可以正确运行了。
"args": [
//boost包含路径
"-I",
"D:\\Software\\cpp_package\\boost_1_85_0",
],