Boost logo

Boost-Build :

Subject: Re: [Boost-build] How to specifiy multiple gcc compilers using windows 8.1
From: Paul A. Bristow (pbristow_at_[hidden])
Date: 2015-06-05 05:44:53


> -----Original Message-----
> From: Edward Diener [mailto:eldiener_at_[hidden]]
> Sent: 04 June 2015 15:48
> To: boost-build_at_[hidden]
> Subject: Re: [Boost-build] How to specifiy multiple gcc compilers using windows 8.1
>
> On 6/4/2015 8:20 AM, Paul A. Bristow wrote:
> > I am trying to specify multiple version of GCC compilers in my
> > user-config like this
> >
> > using gcc
> > : # version
> > 4.8.1
> > : # compiler exe location
> > "C:\Program Files\mingw-builds\x64-4.8.1-win32-seh-rev5\mingw64\bin\g++.exe"
> > : # options
> > ;
> >
> >
> > using gcc
> > : # version
> > 4.9.1
> > : # compiler exe location
> > "C:\Program Files\mingw-w64\x86_64-4.9.1-win32-seh-rt_v3-rev1\mingw64\bin\g++.exe"
> > : # options
> > ;
> >
> > trying to follow the examples at
> >
> > http://www.boost.org/build/doc/html/bbv2/overview/configuration.html
> >
> > I've tried using "" around the file specification and using backslash
> >
> > warning: toolset gcc initialization:
> > warning: can not find user-provided command 'C:Program
> > Filesmingw-buildsx64-4.8.1-win32-seh-rev5ming
> > w64bing++.exe'
> > warning: initialized from C:\Users\Paul\user-config.jam:76
> > I:/modular-boost/tools/build/src/tools\gcc.jam:83: in gcc.init from
> > module gcc
> > error: toolset gcc initialization:
> > error: provided command 'C:Program
> > Filesmingw-buildsx64-4.8.1-win32-seh-rev5mingw64bing++.exe' not f ound
> > error: initialized from C:\Users\Paul\user-config.jam:76
> >
> > or forward slash
> >
> > 'C:/Program' is not recognized as an internal or external command,
> > operable program or batch file.
> > 'C:/Program' is not recognized as an internal or external command,
> > operable program or batch file.
> >
> > It would appear that bjam/b2 is not dealing with the space in the
> > filename? (despite the quotes)
> >
> > A 4.8.1 version is found by default.
> >
> > notice: will use 'C:/Program
> > Files/mingw-builds/x64-4.8.1-win32-seh-rev5/mingw64/bin/g++.exe' for
> > gc c, condition <toolset>gcc-4.8.1
> >
> > notice: using gcc libraries :: <toolset>gcc-4.8.1 :: C:/Program
> > Files/mingw-builds/x64-4.8.1-win32-s
> > eh-rev5/mingw64/bin C:/Program
> > Files/mingw-builds/x64-4.8.1-win32-seh-rev5/mingw64/lib C:/Program Fi
> > les/mingw-builds/x64-4.8.1-win32-seh-rev5/mingw64/lib32 C:/Program
> > Files/mingw-builds/x64-4.8.1-win3
> > 2-seh-rev5/mingw64/lib64
> >
> > How can I get all three versions of gcc available?
>
> I always use forward slashes ( '/' ) rather than backslashes ( '\' ) when dealing with Boost
Build.
>
> It's possible backslashes work but maybe you need to have two of them for a single backslash, ala
C++
> string literals, when you put the path in quotes.

Well, despite this,
 this appears to make progress

'C:\Program' is not recognized as an internal or external command, operable program or batch file.

it appears to make progress

notice: will use 'C:\Program Files\mingw-w64\x86_64-5.1.0-win32-seh-rt_v4-rev0\mingw64\bin\g++.exe'
for gcc, condition <toolset>gcc-5.1.0

notice: using gcc libraries :: <toolset>gcc-5.1.0 :: C:\Program Files\mingw-w64\x86_64-5.1.0-win32-s
eh-rt_v4-rev0\mingw64/bin C:\Program Files\mingw-w64\x86_64-5.1.0-win32-seh-rt_v4-rev0\mingw64/lib C
:\Program Files\mingw-w64\x86_64-5.1.0-win32-seh-rt_v4-rev0\mingw64/lib32 C:\Program Files\mingw-w64
\x86_64-5.1.0-win32-seh-rt_v4-rev0\mingw64/lib64

Using this with

I:\modular-boost\libs\fixed_point\test>b2 --toolset=gcc-5.1.0

Boost-Build starts unhappily

'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
...
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.

Performing configuration checks

    - 32-bit : no
    - 64-bit : yes
...

appears to start well

...updating 64 targets...
common.mkdir ..\..\..\bin.v2\libs\test\build\gcc-5.1.0
common.mkdir ..\..\..\bin.v2\libs\test\build\gcc-5.1.0\debug
common.mkdir ..\..\..\bin.v2\libs\test\build\gcc-5.1.0\debug\link-static
gcc.compile.c++ ..\..\..\bin.v2\libs\test\build\gcc-5.1.0\debug\link-static\compiler_log_formatter

gcc.compile.c++ ..\..\..\bin.v2\libs\test\build\gcc-5.1.0\debug\link-static\debug.o
gcc.compile.c++ ..\..\..\bin.v2\libs\test\build\gcc-5.1.0\debug\link-static\decorator.o
gcc.compile.c++ ..\..\..\bin.v2\libs\test\build\gcc-5.1.0\debug\link-static\execution_monitor.o
gcc.compile.c++ ..\..\..\bin.v2\libs\test\build\gcc-5.1.0\debug\link-static\framework.o

but complains

'"C:\Program Files\mingw-w64\x86_64-5.1.0-win32-seh-rt_v4-rev0\mingw64\bin"' is not recognized as an
 internal or external command,
operable program or batch file.

But finally fails for reasons unclear.

    "C:\Program Files\mingw-w64\x86_64-5.1.0-win32-seh-rt_v4-rev0\mingw64\bin" "..\..\..\bin.v2\libs
\test\build\gcc-5.1.0\debug\link-static\libboost_unit_test_framework-gcc51-d-1_59.a"

...failed gcc.archive ..\..\..\bin.v2\libs\test\build\gcc-5.1.0\debug\link-static\libboost_unit_test

As ever Boost.Build seems to work well on *nix (maybe trying to be too clever for its own good?),
but doesn't like Windows much, and really hates its file system, and can't abide spaces in file
names (a daft idea, like backslashes).

I'll try moving the compiler to a location so that there are no spaces in the filename.

(Since the default location of mingw-builds is into "Windows C:\Program Files, this is a minor
nuisance.)

Thanks anyway.

Paul

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

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk