Boost logo

Boost :

Subject: Re: [boost] clang-win, (Thin)LTO this time
From: Peter Dimov (lists_at_[hidden])
Date: 2018-11-07 14:00:25


degski wrote:

> > So, -fuse-ld=lld is quoted in the command. It appears [looks like]
> > clang-cl.exe gobbles the quotes, though, i.e. it seems to work.
>
> A simple test [slow brain I guess, alzheimers' kicking in] confirms the
> above:

The first level of quoting is b2 quoting:

    using clang-win : : "C:\\Program Files\\LLVM\\clang-cl.exe" ;

Here the quotes and the backslashes are b2 quoting; the value itself ends up
'C:\Program Files\LLVM\clang-cl.exe' (without the single quotes of course.)

If you don't quote, as in

    using clang-win : : C:/Program Files/LLVM/clang-cl.exe ;

b2 will split this on the space character and the value will be a list of
`C:/Program` and `Files/LLVM/clang-cl.exe`.

With

    using clang-win : : "C:\\Program Files\\LLVM\\clang-cl.exe" -fuse-ld=lld
;

the result is a list of `C:\Program Files\LLVM\clang-cl.exe` and
`-fuse-ld=lld`.

The second level of quoting, which clang-win.jam applies to the above list
manually with

    compiler = "\"$(compiler)\"" ;

is for the Windows command line. The result is a command line of the form

    "C:\Program Files\LLVM\clang-cl.exe" "-fuse-ld=lld" <args>

It's not clang-cl.exe that strips the quotes here, it's cmd.exe. Without the
quotes, it will give an error that `C:\Program` isn't found.

The quotes around `-fuse-ld=lld` are unnecessary in this case, as this
argument has no spaces, but they don't hurt. They would be needed for
something like (hypothetically) "-fsome-path=C:\Program Files\somepath".


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