【Boost】Windows 下个人在配置 Boost 踩到的坑以及解决方案
要编译的 Boost 版本:1.82.0
假设 Boost 的根目录为
${boost_root}$如果不想编译可以使用博主编译后的Boost:https://pan.baidu.com/s/1s2fLoEgJX3540rk_WIkNOQ?pwd=yyds
一、关于 VC14.2 编译
https://www.boost.org/ 下载 boost 源码 boost_1_82_0.zip解压。
使用 x86_x64 Cross Tools Command Prompt for VS 2019 切换操作目录至 boost 下 (避免PC中多个VS版本的影响)
基于 VS2019 的 CMD 运行
bootstrap.bat会自动使用 VC14.2 生成 b2.exe (新版本不会生成 bjam.exe)个人建议:首先去配置一下
cl命令的环境变量,避免提示以下问题:'cl' 不是内部或外部命令,也不是可运行的程序。
解决这个问题的方法是将
cl命令的位置添加到系统的环境变量中,我的安装路径在 D 盘中,则需要将以下内容添加到Path环境变量中:D:\Soft\Microsoft\VS2019\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64
环境变量修改之后必须重启才能生效。
添加完以上环境变量之后,再次运行
.\bootstrap.bat,如果出现以下错误:fatal error C1034: ctype.h: 不包括路径集。
则说明是 Windows 环境变量没有配置或没配置好。此时我们需要在系统的环境变量里面新建两个环境变量,它们的变量名和变量值分别为:
# 仅供参考
# 第一个环境变量
变量名:INCLUDE
变量值:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\winrt # 第二个环境变量
变量名:LIB
变量值:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\lib\x64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\ucrt\x64
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64
添加完之后,重启,使环境变量生效。
然后再次运行
.\bootstrap.bat,正常情况下应该输出 b2.exe 的信息:然后接下来要运行
.\b2命令来进行编译,编译命令如下:b2 install --prefix=D:\Soft\Language\Boost-vc142 --build-type=complete --toolset=msvc-14.2 threading=multi address-model=32 address-model=64 debug release
关于上述命令中各参数的详细解释,请自行查阅。
但是执行上述命令之后可能会报如下错误:
error: msvc initialization: parameter 'version' inconsistent
error: no value was specified in earlier initialization
error: an explicit value is specified now
解决方法是修改
${boost_root}目录下的project-config.jam文件,如果用的是 VS2019,则可以将里面的内容修改成:import option ; using msvc : 14.2 : "D:\Soft\Microsoft\VS2019\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\cl.exe"; option.set keep-going : false ;
然后再次运行
.\b2命令,如果没有什么什么问题应该就可以正常编译了。编译之后,会生成一个
include文件夹和一个lib文件夹。至此,编译过程结束。
二、CMake 配置过程
个人建议,使用之前可以先配置一下 Boost include 和 lib 的环境变量
BOOST_INCLUDEDIR:D:\Soft\Language\Boost-vc142\include\boost-1_82
BOOST_LIBRARYDIR:D:\Soft\Language\Boost-vc142\lib
编译用的CMakeLists.txt,有两种写法,这里推荐第一种
link_directories一定要放在add_executable前面,
target_link_libraries一定要放在add_executable后面
不然会发生 cmake 无法打开 libboost_xx_xx-vc142-mt-gd-x32-1_xx.lib 等类似问题
cmake_minimum_required(VERSION 3.1...3.20)
# 若在 Clion 中的工具链使用 MVSC 报错则注释此行
add_compile_options("/std:c++17")
project(Boost)
# 避免 cmake 无法找到 Boost
set (BOOST_ROOT "D:/Soft/Language/Boost-vc142")
#Boost
set(Boost_DEBUG ON)
set(Boost_USE_STATIC_LIBS ON)
find_package(Boost REQUIRED COMPONENTS filesystem)
MESSAGE( STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}.")
MESSAGE( STATUS "Boost_LIBRARY_DIRS = ${Boost_LIBRARY_DIRS}.")
MESSAGE( STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}.")
MESSAGE( STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}.")
# cmake 注意事项
link_directories(${BOOST_ROOT}/lib)
include_directories(${Boost_INCLUDE_DIRS})
FILE(GLOB CPP_FILE0 ${PROJECT_SOURCE_DIR}/Boost-test/*.cpp)
add_executable(Boost_test ${CPP_FILE0})
target_link_libraries(Boost_test ${Boost_LIBRARIES})
第二种:
cmake_minimum_required(VERSION 3.1...3.20)
# 若在 Clion 中的工具链使用 MVSC 报错则注释此行
add_compile_options("/std:c++17")
project(Boost)
#Boost
set(Boost_DEBUG ON)
find_package(Boost REQUIRED)
MESSAGE( STATUS "Boost_INCLUDE_DIRS = ${Boost_INCLUDE_DIRS}.")
MESSAGE( STATUS "Boost_LIBRARY_DIRS = ${Boost_LIBRARY_DIRS}.")
MESSAGE( STATUS "Boost_LIBRARIES = ${Boost_LIBRARIES}.")
MESSAGE( STATUS "Boost_LIB_VERSION = ${Boost_LIB_VERSION}.")
# cmake 注意事项
link_directories(${BOOST_ROOT}/lib)
include_directories(${Boost_INCLUDE_DIRS})
FILE(GLOB CPP_FILE0 ${PROJECT_SOURCE_DIR}/Boost-test/*.cpp)
add_executable(Boost_test ${CPP_FILE0})
target_link_libraries(Boost_test ${Boost_LIBRARY_DIRS}/*.lib)
关于 VS2019 中使用 Boost
简单的在配置属性的 VC 中添加 include 和 lib 的库文件位置即可
参考文章
- https://blog.csdn.net/mintary/article/details/119931073
- https://zhuanlan.zhihu.com/p/85806857
- https://blog.csdn.net/luozhichengaichenlei/article/details/122490831
【Boost】Windows 下个人在配置 Boost 踩到的坑以及解决方案的更多相关文章
- windows下基于IIS配置ssl证书遇到的坑
前几天配置windows下基于IIS配置ssl证书 完全按照步骤执行 绑定https网址后,一直显示:无法访问此网站 检查了443端口,还有防火墙限制,没发现什么 足足困扰了我好几天 后来突然想到前不 ...
- boost::VS2017下编译和配置boost库
环境: win10 vs2017 v141 1.下载 boost_1_70_0.zip. 2.以管理员方式打开 3. bootstrap.bat 4.编译64位库 b2.exe stage -- ...
- webpack4.0在Mac下的安装配置及踩到的坑
一.什么是webpack是一个前端资源加载/打包工具.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源.它做的事情是,分析你的项目结构,找到JavaScript模块以 ...
- windows下用vs2008和boost结合编译程序
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://co63oc.blog.51cto.com/904636/504469 win ...
- windows下编译和安装boost库
boost是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库. 获取方式 boost提供源码形式的安装包,可以从boost官方网站下载,目前最新版本是1.59.0. 本机上正好有boos ...
- < python音频库:Windows下pydub安装配置、过程出现的问题及常用API >
< python音频库:Windows下pydub安装配置.过程出现的问题及常用API > 背景 刚从B站上看过倒放挑战之后也想体验下,心血来潮一个晚上完成了基本的实现.其中倒放与播放部分 ...
- Windows下python的配置
Windows下python的配置 希望这是最后一次写关于python的配置博客了,已经被python的安装烦的不行了.一开始我希望安装python.手动配置pip并使用pip安装numpy,然而发现 ...
- Windows 下用 gogs 配置局域网 git server
大道曙光 Windows 下用 gogs 配置局域网 git server 最近要用 C# 开发一个新的项目,所以需要在 Windows 局域网环境下构建一个 git server. 在 Window ...
- Windows 下如何安装配置Snort视频教程
Windows 下如何安装配置Snort视频教程: 第一步: http://www.tudou.com/programs/view/UUbIQCng360/ 第二部: http://www.tudou ...
- PHP学习之-Mongodb在Windows下安装及配置
Mongodb在Windows下安装及配置 1.下载 下载地址:http://www.mongodb.org/ 建议下载zip版本. 2.安装 下载windows版本安装就和普通的软件一样,直接下一步 ...
随机推荐
- IDEA:自动生成方法注释并添加 @param 参数(Java+Kotlin)
在用 Java 或 Kotlin 编写方法时建议编写完善的注释,包含每个参数的意义和返回的内容,下面介绍在 IDEA 中自动生成方法注释的技巧. 第二张图按照图片填写就好了 ③(注意是*不是/*) * ...
- 从零开始的 dbt 入门教程 (dbt-core 基础篇)
最近一直在处理数据分析和数据建模的事情,所以接触了 dbt 等数据分析的工具,国内目前对于 dbt 比较详细的资料不多,所以打算写四道五篇 dbt 相关的文章,本文属于 dbt 系列的第一篇,本篇主要 ...
- vue-test --------模板引用
<template> <input type="text" v-model.lazy="message"> <div>{{m ...
- 使用jvm工具排查系统问题
java-jvm-tool Jstatd 远程连接(推荐) 不用重启项目 远程机配置 [demo@localhost jvmtest]$ vi jstatd.all.policy# 内容grant c ...
- jextract的使用
写这个博客的目的:新人去看jextract的官网是看不懂的,就算看懂了也不会使用,一头雾水,我会从0开始教如何使用,如何搭配java去调用c函数. 首先我们得了解jextract是什么,官网的解释是一 ...
- 子类Dog根据自己的需要,重写了Animal方法
子类Dog根据自己的需要,重写了Animal方法 package com.guoba.method; class Animal{ public void move(){ System.out.prin ...
- 神经网络优化篇:详解梯度消失/梯度爆炸(Vanishing / Exploding gradients)
梯度消失/梯度爆炸 训练神经网络,尤其是深度神经所面临的一个问题就是梯度消失或梯度爆炸,也就是训练神经网络的时候,导数或坡度有时会变得非常大,或者非常小,甚至于以指数方式变小,这加大了训练的难度. 接 ...
- python在容器内克隆拉取git私有仓库
前言 目前有个python应用需要在容器镜像内拉取git私有仓库的代码,一开始的想法是用GitPython,折腾一番ssh私钥和known_hosts问题后,发现还是在镜像中封装个git最省事,然后用 ...
- ZincSearch轻量级全文搜索引擎入门到
ZincSearch轻量级全文搜索引擎入门到 Zinc是一个用于对文档进行全文搜索的搜索引擎.它是开源的,内置在 Go 中.Zinc不是从头开始构建索引引擎,而是构建在 bluge 之上,这是一个出色 ...
- idea配置tomcat热部署
idea配置tomcat热部署,点击+添加一个local的tomcat服务 点击部署tab 添加Artifact...选择 一定要选择exploded,否则没有热部署选项!!! 一定要选择explod ...