如何编译boost到windows使用[vs2019版本]

1.下载boost_1_75_0.tar.gz,解压到E:\cpp\boost_1_75_0

2.运行E:\cpp\boost_1_75_0目录下的b2.exe,生成对应的bjam.exe

3.bjam.exe在目录E:\cpp\boost_1_75_0\tools\build\src\engine, 把他拷贝到

E:\cpp\boost_1_75_0

4.到windows菜单栏找一个visual studio的命令行工具:Developer Command Prompt v16.0.4

运行:

bjam stage --toolset=msvc-14.2 --without-python --stagedir="E:\cpp\boost_1_75_0" link=static runtime-link=shared runtime-link=static threading=multi debug release 
生成vs2019版本的lib文件到E:\cpp\boost_1_75_0\lib
5.新建cpp工程,设置VC++目录如下:
包含目录增加:E:\cpp\boost_1_75_0;
库目录增加: E:\cpp\boost_1_75_0\lib;
运行代码:
/*
	This example parses a JSON file and pretty-prints
	it to standard output.
*/

#include <boost/json.hpp>
#include <iomanip>
#include <iostream>

namespace json = boost::json;

void
pretty_print(std::ostream& os, json::value const& jv, std::string* indent = nullptr)
{
	std::string indent_;
	if (!indent)
		indent = &indent_;
	switch (jv.kind())
	{
	case json::kind::object:
	{
		os << "{\n";
		indent->append(4, ' ');
		auto const& obj = jv.get_object();
		if (!obj.empty())
		{
			auto it = obj.begin();
			for (;;)
			{
				os << *indent << json::serialize(it->key()) << " : ";
				pretty_print(os, it->value(), indent);
				if (++it == obj.end())
					break;
				os << ",\n";
			}
		}
		os << "\n";
		indent->resize(indent->size() - 4);
		os << *indent << "}";
		break;
	}

	case json::kind::array:
	{
		os << "[\n";
		indent->append(4, ' ');
		auto const& arr = jv.get_array();
		if (!arr.empty())
		{
			auto it = arr.begin();
			for (;;)
			{
				os << *indent;
				pretty_print(os, *it, indent);
				if (++it == arr.end())
					break;
				os << ",\n";
			}
		}
		os << "\n";
		indent->resize(indent->size() - 4);
		os << *indent << "]";
		break;
	}

	case json::kind::string:
	{
		os << json::serialize(jv.get_string());
		break;
	}

	case json::kind::uint64:
		os << jv.get_uint64();
		break;

	case json::kind::int64:
		os << jv.get_int64();
		break;

	case json::kind::double_:
		os << jv.get_double();
		break;

	case json::kind::bool_:
		if (jv.get_bool())
			os << "true";
		else
			os << "false";
		break;

	case json::kind::null:
		os << "null";
		break;
	}

	if (indent->empty())
		os << "\n";
}
int
main(int argc, char** argv)
{
	json::object obj;

	obj.emplace("key1", "value1");
	obj.emplace("key2", 42);
	obj.emplace("key3", false);
	pretty_print(std::cout, obj);

	return EXIT_SUCCESS;
}

  运行得到结果:

 

 

posted @ 2021-03-30 23:03  星空42  阅读(538)  评论(0)    收藏  举报