Reputation: 8142
I tried to build boost 1.65.0 using Visual Studio 2017 x64 and Windows 10.
This is how my power shell build script looks like:
. ".\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
To boil it down – it simple does:
bootstrap.bat
b2.exe --toolset=msvc-14.1 address-model=64 --build-type=complete stage –j 8
Execution bootstrap.bat seems to work. But b2 yields some errors – vcvarsall.bat not found:
Nevertheless, it seems that everything is build fine:
Is it safe to ignore those error messages? Can someone reproduce those errors?
Upvotes: 2
Views: 3134
Reputation: 4539
To update (and correct!) my previous answers on building boost, here are my latest notes for building boost
on Windows for both Visual Studio
and MinGw
.
Windows does not directly support boost, so you can download it and put it wherever you want.
The boost user guide recommends creating a BOOST_ROOT
environment variable with the location of boost.
In a Visual Studio tools Command Prompt:
cd boost_1_xx_0
call bootstrap.bat
For 64 bit static libraries (recommended for 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
Note: the boost thread
library must be built with dynamic linking see: https://studiofreya.com/2015/05/20/the-simplest-way-of-building-boost-1-58-for-32-bit-and-64-bit-architectures-with-visual-studio/
For 64 bit dynamic library (thread only):
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
If you have multiple versions of Visual Studio
installed and want to build for a specific version then use:
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
Note: when I built
boost 1.65.0
forVisual Studio 2017
for 64 bit binaries,b2
output "building 32 bit: true", but it built 64 bit libraries...
Also note: whilst compiling a boost 1.65.0
include file in Visual Studio 2017
you may see the warning:
Unknown compiler version - please run the configure tests and report the results
This is because the latest version of Visual Studio 2017
defines _MSC_VER
as 1911 whilst boost\config\compilier\visualc.hpp
contains:
// 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
To remove the warning, change line 325 of visualc.hpp
to:
#if (_MSC_VER > 1911)
Ensure that mingw
or gcc
is in the path, e.g.: 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
Note: for boost versions prior to 1.61 change
bootstrap.bat gcc
tobootstrap.bat mingw
Also note: 2>&1 | tee name.txt
isn't necessary, but it's useful to keep a log...
Upvotes: 2