I am trying to build Boost 1.64 on Windows with VS2017. Everything builds without errors, but my output libs directory is missing some .lib
s and .dll
s. Specifically, the primary missing library that I need is Boost.Python.
My most recent attempt at building looks like this, although I have tried many different combinations of options:
.\b2 --prefix=c:\boost --build-dir=boost_build --layout=versioned toolset=msvc-14.1 address-model=64 -j4 --with-python -a --reconfigure --stage-dir=stage --build-type=complete --debug-configuration -d2 stage >build.log 2>&1
And my build output looks like this:
notice: found boost-build.jam at C:/boost_1_64_0/boost_1_64_0/boost-build.jam
notice: loading Boost.Build from C:/boost_1_64_0/boost_1_64_0/tools/build/src
notice: Searching 'C:\Windows' 'C:\Users\tsanders' 'C:\Users\tsanders' 'C:\boost_1_64_0\boost_1_64_0\tools/build/src' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/kernel' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/util' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/build' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/tools' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/contrib' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/.' for site-config configuration file 'site-config.jam'.
notice: Configuration file 'site-config.jam' not found in 'C:\Windows' 'C:\Users\tsanders' 'C:\Users\tsanders' 'C:\boost_1_64_0\boost_1_64_0\tools/build/src' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/kernel' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/util' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/build' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/tools' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/contrib' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/.'.
notice: Searching 'C:\Users\tsanders' 'C:\Users\tsanders' 'C:\boost_1_64_0\boost_1_64_0\tools/build/src' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/kernel' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/util' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/build' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/tools' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/contrib' 'C:/boost_1_64_0/boost_1_64_0/tools/build/src/.' for user-config configuration file 'user-config.jam'.
notice: Loading user-config configuration file 'user-config.jam' from 'C:/Users/tsanders'.
notice: [python-cfg] Configuring python...
notice: [python-cfg] user-specified cmd-or-prefix: "C:\Miniconda2\python.exe"
notice: [python-cfg] user-specified includes: "C:\Miniconda2\include"
notice: [python-cfg] user-specified libraries: "C:\Miniconda2\libs"
notice: [python-cfg] Checking interpreter command "C:\Miniconda2\python.exe"...
notice: [python-cfg] running command 'DIR /-C /A:S "C:\Miniconda2\python.exe" 2>&1'
notice: [python-cfg] running command 'C:\Miniconda2\python.exe -c "from sys import *; print('version=%d.%d\nplatform=%s\nprefix=%s\nexec_prefix=%s\nexecutable=%s' % (version_info[0],version_info[1],platform,prefix,exec_prefix,executable))" 2>&1'
notice: [python-cfg] ...requested configuration matched!
notice: [python-cfg] Details of this Python configuration:
notice: [python-cfg] interpreter command: "C:\Miniconda2\python.exe"
notice: [python-cfg] include path: "C:\Miniconda2\include"
notice: [python-cfg] library path: "C:\Miniconda2\libs"
notice: [python-cfg] DLL search path: "C:\Miniconda2"
notice: [python-cfg] Checking for NumPy...
notice: [python-cfg] running command 'C:\Miniconda2\python.exe -c "import sys; sys.stderr = sys.stdout; import numpy; print(numpy.get_include())"'
notice: [python-cfg] NumPy enabled
notice: Searching '.' for project-config configuration file 'project-config.jam'.
notice: Loading project-config configuration file 'project-config.jam' from '.'.
notice: [msvc-cfg] msvc-14.0 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe'
notice: [msvc-cfg] msvc-12.0 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe'
notice: [msvc-cfg] msvc-11.0 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.exe'
notice: [msvc-cfg] msvc-14.1 detected, command: 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64\cl.exe'
notice: will use 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64\cl.exe' for msvc, condition <toolset>msvc-14.1
'notice: [generate-setup-cmd] 14.10.25017 is 14.1'
'notice: [generate-setup-cmd] 14.10.25017 is 14.1'
'notice: [generate-setup-cmd] 14.10.25017 is 14.1'
'notice: [generate-setup-cmd] 14.10.25017 is 14.1'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>/<address-model>', setup: 'call "C:\Users\tsanders\AppData\Local\Temp\b2_msvc_14.10.25017_vcvars32_.cmd" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>/<address-model>32', setup: 'call "C:\Users\tsanders\AppData\Local\Temp\b2_msvc_14.10.25017_vcvars32_.cmd" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>x86/<address-model>', setup: 'call "C:\Users\tsanders\AppData\Local\Temp\b2_msvc_14.10.25017_vcvars32_.cmd" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>x86/<address-model>32', setup: 'call "C:\Users\tsanders\AppData\Local\Temp\b2_msvc_14.10.25017_vcvars32_.cmd" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>/<address-model>64', setup: 'call "C:\Users\tsanders\AppData\Local\Temp\b2_msvc_14.10.25017_vcvarsx86_amd64_.cmd" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>x86/<address-model>64', setup: 'call "C:\Users\tsanders\AppData\Local\Temp\b2_msvc_14.10.25017_vcvarsx86_amd64_.cmd" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>ia64/<address-model>', setup: 'call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvarsall.bat" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>ia64/<address-model>64', setup: 'call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvarsall.bat" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>arm/<address-model>', setup: 'call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvarsall.bat" >nul
'
notice: [msvc-cfg] condition: '<toolset>msvc-14.1/<architecture>arm/<address-model>32', setup: 'call "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Auxiliary/Build/vcvarsall.bat" >nul
'
notice: [zlib] Using pre-installed library
notice: [zlib] Condition
notice: [bzip2] Using pre-installed library
notice: [bzip2] Condition
Performing configuration checks
- 32-bit : yes
- arm : no
- mips1 : no
- power : no
- sparc : no
- x86 : yes
- symlinks supported : yes
Component configuration:
- atomic : not building
- chrono : not building
- container : not building
- context : not building
- coroutine : not building
- coroutine2 : not building
- date_time : not building
- exception : not building
- fiber : not building
- filesystem : not building
- graph : not building
- graph_parallel : not building
- iostreams : not building
- locale : not building
- log : not building
- math : not building
- metaparse : not building
- mpi : not building
- program_options : not building
- python : building
- random : not building
- regex : not building
- serialization : not building
- signals : not building
- system : not building
- test : not building
- thread : not building
- timer : not building
- type_erasure : not building
- wave : not building
...found 1 target...
Things to note:
--debug-configuration
definitely seems to indicate that it is finding everything correctly.1 target
that it finds is the all
target; I don't see any kind of build output for the boost.python sources like I see if I build additional libraries.boost_python.dll
. (Although technically I think it should be looking for something like boost_python-vc141-mt-1_64.dll
...)I have tried a number of combinations of options for bootstrap.bat
(e.g. --with-libraries=python
, --with-python=C:\Miniconda2\python.exe
, --with-python-root=C:\Miniconda2
) and b2.exe
, but nothing seems to make a difference.
If I download precompiled boost_python
libraries and put them alongside the rest of the libraries that I have built, my project builds and runs as expected.
Building the python libraries myself is the only thing that I am still stuck on.
I know I'm not alone; I posted this question in a Reddit thread, and another user mentioned that he had the same issue; unfortunately his solution was to "eventually hit on the right set of options for both bootstrap and b2".
Has anyone else run into an issue like this?
I ended up tracing this back to my user-config.jam
, where my Python version was unspecified.
Originally, I had this configuration:
using python
: # version
: C:\\Miniconda2\\python.exe
: C:\\Miniconda2\\include
: C:\\Miniconda2\\libs
;
The documentation seems to indicate that leaving "version" empty is fine; I think an empty version is supposed to mean either "default version" or "all versions". However, this caused boost to silently skip building the python libraries.
Everything is building as expected when explicitly specifying the Python version:
using python
: 2.7 # version
: C:\\Miniconda2\\python.exe # interpreter
: C:\\Miniconda2\\include # include dir
: C:\\Miniconda2\\libs # library dir
;