构建提升1.65.0:找不到vcvarsall.bat

时间:2017-08-23 11:40:17

标签: boost build visual-studio-2017

我尝试使用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

要把它煮沸 - 这很简单:

  1. bootstrap.bat
  2. b2.exe --toolset=msvc-14.1 address-model=64 --build-type=complete stage –j 8
  3. 执行bootstrap.bat似乎有效。但是b2会产生一些错误 - 找不到vcvarsall.bat:

    enter image description here

    尽管如此,似乎一切都很好:

    enter image description here

    忽略这些错误消息是否安全? 有人可以重现这些错误吗?

1 个答案:

答案 0 :(得分:2)

要更新(并更正!)我以前关于构建提升的答案,以下是我在Windows上为boostVisual Studio构建MinGw的最新说明。

Windows不直接支持boost,因此您可以将其下载并将其放在任何您想要的位置 boost用户指南建议使用boost的位置创建BOOST_ROOT环境变量。

构建Visual Studio

在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 2017toolset=msvc-14.1
  • Visual Studio 2015toolset=msvc-14.0
  • Visual Studio 2013toolset=msvc-12.0
  • Visual Studio 2012toolset=msvc-11.0
  • Visual Studio 2010toolset=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构建

确保mingwgcc在路径中,例如: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并非必要,但保留日志非常有用...