Boost logo

Boost :

Subject: Re: [boost] Building Boost 1.69 with Visual Studio 1.69
From: Paul A. Bristow (pbristow_at_[hidden])
Date: 2019-03-25 18:09:43


> -----Original Message-----
> From: Boost [mailto:boost-bounces_at_[hidden]] On Behalf Of Mateusz Loskot via Boost
> Sent: 24 February 2019 13:46
> To: boost_at_[hidden]
> Cc: Mateusz Loskot
> Subject: Re: [boost] Building Boost 1.69 with Visual Studio 1.69
>
> On Sun, 24 Feb 2019 at 10:20, Trueman, Chris <ctrueman_at_[hidden]> wrote:
> >
> > Thank you for taking the time to reply. Following your steps, b2 is still trying to use the VS2017 compiler that I have
installed. I
> can't seem to make it choose the VS2019 compiler.
>
> I forgot completely about the project-config.jam modification.
> Here is more complete procedure
>
> 1. START > Visual Studio 2019 > x64 Native Tools Command Prompt
> 2. cd D:\boost.win
> 3. .\bootstrap.bat
> 4. Edit generated project-config.jam and replace
>
> using msvc ;
> with
> using msvc : 14.1 : "C:\\Program Files (x86)\\Microsoft Visual
> Studio\\2019\\Preview\\VC\\Tools\\MSVC\\14.20.27323\\bin\\HostX64\\x64\\cl.exe"
> ;
>
> 5. Before you fire b2, you can remove -nologo from this line in
> D:\boost.win\tools\build\src\tools\msvc.jam
>
> https://github.com/boostorg/build/blob/20d72776c8b61613f0e3b32d01b17f9ee013db0d/src/tools/msvc.jam#L1488
>
> 6. Finally, run b2
>
> .\b2 variant=debug address-model=64 --with-filesystem --with-test
> --layout=system
>
> ...
> compile-c-c++ bin.v2\libs\filesystem\build\msvc-14.1\debug\address-model-64\link-static\threading-
> multi\codecvt_error_category.obj
> Microsoft (R) C/C++ Optimizing Compiler Version 19.20.27323 for x64
> Copyright (C) Microsoft Corporation. All rights reserved.
>
> cl "libs\filesystem\src\codecvt_error_category.cpp"
> -Fo"bin.v2\libs\filesystem\build\msvc-14.1\debug\address-model-64\link-static\threading-multi\codecvt_error_category.obj"
> -TP /Z7 /Od /Ob0 /W3 /GR /MDd /Zc:forScope /Zc:wchar_t /favor:blend
> /wd4675 /EHs -c
> -DBOOST_ALL_NO_LIB=1
> -DBOOST_FILESYSTEM_STATIC_LINK=1
> "-I."
>
> and you should see the CL 19.20.27323 from VS2019 is actually used, that is:
>
>
> D:\boost.win>cl /? | findstr optimized
> Microsoft (R) C/C++ Optimizing Compiler Version 19.20.27323 for x64
> Copyright (C) Microsoft Corporation. All rights reserved.

This looks fine, except that what I really expect and want to be able to do is use BOTH 14.1 and 14.2 in one call of bjam/b2

b2 address-model=64 toolset=msvc-14.1,msvc-14.2 ...

So I put this in my user-config.jam

using msvc
   : # Version VS 2017
    14.1
   : # compiler location (Note that the file layout completely changed recently)
  "C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.14.26428/bin/Hostx64/x64/cl.exe" # 15.7.1
15May2018 for
   : # Options
   <define>BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE # Needed if you are working on develop or master ahead of the latest release.
 ;

and the debug-config info said:

 # notice: will use
'C:/Program Files (x86)/Microsoft Visual Studio/2017/Professional/VC/Tools/MSVC/14.14.26428/bin/Hostx64/x64/cl.exe'
 for msvc, condition <toolset>msvc-14.1

# Used, for example, thus
# b2 toolset=msvc-14.1

using msvc
  : # Version VS 2019 preview
    14.2
  : # compiler location (Note that the file layout completely changed recently)
    "C:/Program Files (x86)/Microsoft Visual Studio/2019/Preview/VC/Tools/MSVC/14.20.27508/bin/Hostx64/x64/cl.exe"
    : # Options
    <define>BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE # Needed if you are working on develop or master ahead of the latest release.
 ;

and the debug-config info said:

# notice: will use
'C:/Program Files (x86)/Microsoft Visual Studio/2019/Preview/VC/Tools/MSVC/14.20.27508/bin/Hostx64/x64/cl.exe'
 for msvc, condition <toolset>msvc-14.2

and I then used it like this for a hello_wordly example:

b2 -a address-model=64 toolset=14.1 -d2 --debug-configuration > logfile.log

The msvc.read-setup stage was this

msvc.read-setup <p..\..\..\bin.v2\standalone\msvc\msvc-14.1\address-model-64\architecture-x86>msvc-setup.read

file C:\Users\Paul\AppData\Local\Temp\jam2c1c11d5.000
REM "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsx86_amd64.bat"
SET CommandPromptType=Cross
SET DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\
SET ExtensionSdkDir=C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs
SET Framework40Version=v4.0

and build and run was OK,

but when I tried using 14.2 VS2019 preview

b2 -a address-model=64 toolset=msvc-14.1 -d2 --debug-configuration >> logfile.log

it failed here:

...skipped
<p..\..\..\bin.v2\libs\hello_boost\example\hello_boost.test\msvc-14.2\debug\address-model-64\asynch-exceptions-on\link-static\runtim
e-link-static\threading-multi>hello_boost.obj

for lack of <p..\..\..\bin.v2\standalone\msvc\msvc-14.2>msvc-setup.nup...

Of course what I really wanted to do was

b2 -a address-model=64 toolset=msvc-14.1,msvc-14.2 > mylog.log

but I thought I would check I could walk first ;-)

Suggestions on where I am going wrong welcome.

Paul

---
Paul A. Bristow
Prizet Farmhouse
Kendal UK LA8 8AB
+44 (0) 1539 561830

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk