我尝试使用Visual Studio 2017 x64和Windows 10构建boost 1.65.0。
This是我的power shell构建脚本的样子:
. ".\Invoke-CmdScript.ps1"
# We expect PowerShell Version 5
if(-Not $PSVersionTable.PSVersion.Major -eq 5) {
Write-Host "Expecting PowerShell Version 5"
return
}
# Now download boost 1.65.0
Invoke-WebRequest http://dl.bintray.com/boostorg/release/1.65.0/source/boost_1_65_0.zip -OutFile C:\thirdparty\vs2017\x64\boost_1_65_0.zip
# Check file hash
$value = Get-FileHash C:\thirdparty\vs2017\x64\boost_1_65_0.zip -Algorithm SHA256
if($value.Hash -ne "f3f5c37be45eb6516c95cd147d8aa4abb9b52121fc3eccc1fc65c4af0cf48592") {
Write-Host "boost archive seems to be corrupted"
return
}
# Extract file
$strFileName="$env:ProgramFiles\7-Zip\7z.exe"
If (Test-Path $strFileName){
# Use 7-zip
if (-not (test-path "$env:ProgramFiles\7-Zip\7z.exe")) {throw "$env:ProgramFiles\7-Zip\7z.exe needed"}
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"
sz x C:\thirdparty\vs2017\x64\boost_1_65_0.zip -oC:\thirdparty\vs2017\x64
} Else {
# use slow Windows stuff
Expand-Archive C:\thirdparty\vs2017\x64\boost_1_65_0.zip -DestinationPath C:\thirdparty\vs2017\x64\boost_1_65_0
}
# Removed downloaded zip archive
Remove-Item C:\thirdparty\vs2017\x64\boost_1_65_0.zip
# Setup VS2017 x64 environment
Invoke-CmdScript -script "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" -parameters amd64
# Build
cd C:\thirdparty\vs2017\x64\boost_1_65_0
Invoke-CmdScript -script "bootstrap.bat"
$cpuInfo = Get-CimInstance -ClassName 'Win32_Processor' `
| Select-Object -Property 'DeviceID', 'Name', 'NumberOfCores', 'NumberOfLogicalProcessors';
Write-Host $cpuInfo.NumberOfLogicalProcessors
.\b2.exe --toolset=msvc-14.1 address-model=64 --build-type=complete stage -j $cpuInfo.NumberOfLogicalProcessors
要把它煮沸 - 这很简单:
答案 0 :(得分:2)
要更新(并更正!)我以前关于构建提升的答案,以下是我在Windows上为boost
和Visual Studio
构建MinGw
的最新说明。
Windows不直接支持boost,因此您可以将其下载并将其放在任何您想要的位置
boost用户指南建议使用boost的位置创建BOOST_ROOT
环境变量。
在Visual Studio工具命令提示符中:
cd boost_1_xx_0
call bootstrap.bat
对于64位静态库(推荐用于Windows):
b2 -j8 toolset=msvc address-model=64 link=static threading=multi runtime-link=shared --build-type=complete stage
2>&1 | tee msvc_static_build.txt
注意:boost thread
库必须使用动态链接构建,请参阅:https://studiofreya.com/2015/05/20/the-simplest-way-of-building-boost-1-58-for-32-bit-and-64-bit-architectures-with-visual-studio/
对于64位动态库(仅限线程):
b2 -j8 toolset=msvc address-model=64 link=shared threading=multi runtime-link=shared --with-thread --build-type=minimal stage
2>&1 | tee msvc_thread_build.txt
如果您安装了多个Visual Studio
版本,并且想要针对特定版本进行构建,请使用:
Visual Studio 2017
:toolset=msvc-14.1
Visual Studio 2015
:toolset=msvc-14.0
Visual Studio 2013
:toolset=msvc-12.0
Visual Studio 2012
:toolset=msvc-11.0
Visual Studio 2010
:toolset=msvc-10.0
注意:当我为
boost 1.65.0
为64位二进制文件构建Visual Studio 2017
时,b2
输出"构建32位:true",但它构建了64位库。 ..
另请注意:在boost 1.65.0
中编译Visual Studio 2017
包含文件时,您可能会看到警告:
未知的编译器版本 - 请运行配置测试并报告结果
这是因为Visual Studio 2017
的最新版本将_MSC_VER
定义为1911,而boost\config\compilier\visualc.hpp
包含:{/ p>
// last known and checked version is 19.10.25017 (VC++ 2017):
#if (_MSC_VER > 1910)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# else
# pragma message("Unknown compiler version - please run the configure tests and report the results")
# endif
#endif
要删除警告,请将visualc.hpp
的第325行更改为:
#if (_MSC_VER > 1911)
确保mingw
或gcc
在路径中,例如:C:\Qt\Tools\mingw491_32\bin
cd boost_1_xx_0
call bootstrap.bat gcc
b2 toolset=gcc link=shared threading=multi --build-type=complete stage
2>&1 | tee mingw_build.txt
注意:对于之前的提升版 1.61将
bootstrap.bat gcc
更改为bootstrap.bat mingw
另请注意:2>&1 | tee name.txt
并非必要,但保留日志非常有用...