将Boost库添加到Visual Studio 2017
在windows 环境中,一般比较推荐的打包软件的方式是,将自己所需要的共享库放在软件自己的文件夹中,并且避免与其它的软件共用。除非是微软的官方组件,比如微软自家的VC Runtime。
Boost库在windows 平台的使用,一般也是推荐直接静态链接,而非是使用动态库。并且 Boost 库时如些强大,以致于你使用了之后,不需要手动在 VS 中配置你需要链接的库文件,而是由头文件搞定这一切,除非你用至的Boost库用到了微软自家的库,但是默认这个库又没有配置到项目中。
废话就说到这里,下面给出具体的操作过程。
第一步,当然是构建我们的Boost库了
打开VS的命令行(在开始菜单里,我这里是中文版的,名称是 “适用于 VS 2017 的 x64 本机工具命令提示”),进入到我们的Boost库主目录(下载好的Boost库,解压后的目录)。
首先构建Boost自己的构建工具 b2和bjam 等,然后再调用构建工具来完成构建,为了方便,我们直接写个批处理脚本吧。
bootstrap
b2 -j %NUMBER_OF_PROCESSORS% toolset=msvc-14.1 address-model=32 threading=multi --build-dir=x86_build --stagedir=stage_x86
b2 -j %NUMBER_OF_PROCESSORS% toolset=msvc-14.1 address-model=64 threading=multi --build-dir=x64_build --stagedir=stage_x64
当然,你也可以直接手输上面的命令行完成构建。构建结束后,我们的 boost 构建目录下会多出两个目录 stage_x86 和 stage_x64 ,这两个目录里就是我们需要的库,当然在windows平台上默认只生成静态库,如果你需要动态库,可以使用 b2的 --build-type 参数来指定。
第二步,将我们的Boost库文件和头文件放到指定目录
我这里以放到 D:\libs\boost_1_65_1 目录为示例进行操作,目录结构如下
D:\libs\boost_1_65_1
|
|
+include
| |
| +boost(boost头文件)
|
|
+lib
|
+msvc-141
|
+x86(编译好的x86库)
|
+x64(编译好的x64库)
第三步,配置VS的C++属性页
这里我们只配置用户属性页,而且只配置桌面应用
打开命令行,创建目录(也许已存在,创建只是为了保证存在)
md %LOCALAPPDATA%\Microsoft\MSBuild\v4.0
cd %LOCALAPPDATA%\Microsoft\MSBuild\v4.0
start .
然后你会发现弹出了一个文件夹。里面可能会有几个文件,也许是空的,不过不要紧,我们想要的是这么两个文件,对应的改一下就好,没有就自己创建。
Microsoft.Cpp.Win32.user.props 和 Microsoft.Cpp.x64.user.props
两个文件的内容默认是一样的,我们修改成如下的样子
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets">
</ImportGroup>
<PropertyGroup Label="UserMacros">
<BOOST_SDK_ROOT>D:\libs\boost_1_65_1</BOOST_SDK_ROOT>
</PropertyGroup>
<PropertyGroup>
<IncludePath>$(BOOST_SDK_ROOT)\include;$(IncludePath)</IncludePath>
<LibraryPath>$(BOOST_SDK_ROOT)\lib\msvc-$(PlatformToolsetVersion)\$(PlatformTarget)\;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup />
<ItemGroup>
<BuildMacro Include="BOOST_SDK_ROOT">
<Value>$(BOOST_SDK_ROOT)</Value>
<EnvironmentVariable>true</EnvironmentVariable>
</BuildMacro>
</ItemGroup>
</Project>
第四步,试一个?
自己写Hello World!吧,我懒......
将Boost库添加到Visual Studio 2017的更多相关文章
- Gtest:Using visual studio 2017 cross platform feature to compile code remotely
参考:使用Visual Studio 2017作为Linux C++开发工具 前言 最近在学Gtest单元测试框架,由于平时都是使用Source Insight写代码,遇到问题自己还是要到Linux下 ...
- Visual Studio 2017中使用Libman管理客户端库
什么是Libman 微软在Visual Studio 2017 15.8版本中内嵌了一个新的工具Library Manager. Library Manager(简称Libman)是一个客户端库管理工 ...
- Visual studio 2017添加引用时报错未能正确加载ReferenceManagerPackage包的解决方法
vs2017添加引用时报错未能正确加载“ReferenceManagerPackage”包. - AusonSir - 博客园https://www.cnblogs.com/-bao/p/674941 ...
- Visual studio 2017编译 boost
下载: https://www.boost.org/ 或者 https://dl.bintray.com/boostorg/release/1.66.0/source/ 下载完成以后解压到自己想要 ...
- Visual Studio 2017 添加引用报错(未能正确加载ReferenceManagerPackage包)
最近安装了VS2017,在开发时需要添加引用,于是像原来使用vs2012那样直接右键,添加引用,结果弹出一个错误提示“未能完成操作.不支持此接口”.真真是见了鬼了...... google.度娘一顿搜 ...
- visual studio 2017 添加MSDN
原文:visual studio 2017 添加MSDN 1.启动VS2017的安装软件,点击更改,进行MSDN帮助组件添加安装. 2.在单个组件中找到"Help Viewer", ...
- 如何使用Visual Studio 2017调试.net库源代码
在Visual Studio 2017按如下步骤设置: 1.取消选中(工具 - >选项 - >调试 - >仅我的代码)复选框.2.确保设置了(工具 - >选项 - >调试 ...
- [Visual studio] Visual studio 2017添加引用时报错未能正确加载ReferenceManagerPackage包的解决方法
转载原文:http://www.ynpxrz.com/n1806804c2023.aspx 1.打开VS2017下的Developer Command Prompt for VS 2017 2.然后在 ...
- 最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
随机推荐
- OpenGL chapter4 基础变换
math3d库有两个数据类型,能够表示一个三维或四维向量: M3DVector3f M3DVector4f 4.3 理解投影 正投影 : 正交变换 透视投影 : 透视变换 表4.1 OpenGL变换术 ...
- 字符串,hash
字符串1.有序的字符的集合,不可变2.s.swapcase() 大变小,小变大3.s.capitalize() 第一个大写4.s.casefold() 返回将字符串中所有大写字符转换为小写后生成的字符 ...
- opencv3.1+contrib的配置大总结(配置了两天,遇到问题无数)
开门见山的说:别用opencv3.0,这个版本添加扩展库不怎么好,能不能成功我不敢说,我是试了无数次都不行!!! 我的配置:W7+64位+opencv3.1+Cmake3.7.2 下载 下载什么的大家 ...
- XE6 c++builder Edit垂直居中
class TMyEdit : public Vcl::Stdctrls::TEdit { virtual void __fastcall CreateParams(TCreateParams& ...
- 任务调度的方式:Timer、ScheduledExecutorService、spring task、quartz、XXL-JOB、Elastic-Job
任务调度 定时任务调度:基于给定的时间点.给定的时间间隔.给定的执行次数自动执行的任务. Timer 介绍 Timer,简单无门槛,一般也没人用. Timer位于java.util包下,其内部包含且仅 ...
- 使用REGINI修改注册表权限
regini regset.ini 就行啦 regset.ini 是你要修改的数据 1.注册表修改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr ...
- 进程和创建线程的两种方法(threading.Thread)
进程 如QQ 要以一个整体的形式暴露给操作系统管理,里面包含对各种资源的调用,内存的管理, 网络接口的调用等,进程就是各种资源管理的集合 线程:是操作系统最小的调度单位,是一串指令的结合 进程 要操作 ...
- as3 XML类和XMLList类的区别
一.XML类和XMLList类的区别 AS3.0中,处理XML主要用到两个主类,XML类和XMLList类,这两个类的很多内容是共通的.应该有人会问,XML和XMLList的区别是什么? ...
- SpringBoot 常用注解(持续更新)
SpringBoot 常用注解 @SpringBootApplication @Bean @ComponentScan @ControllerAdvice @ExceptionHandler @Res ...
- vue基础——Class与Style绑定
Class与Style绑定 操作元素的class列表和内联样式是数据绑定的一个常见的需求. 因为它们都是属性,所以我们可以用v-bind来处理它们:只需要通过表达式计算出字符串结果即可.不过,字符串拼 ...