On Fri, Jun 27, 2008 at 10:41 AM, troy d. straszheim <troy@resophonic.com> wrote:
Beman Dawes wrote:

Doug, you need to explain this to us Windows developers who don't have a clue as to how to manage multiple build variants of libraries without name mangling.


I don't think it is absolutely necessary to do so.  Again, CMake can mangle, or not.


FWIW, I'm working on a commercial project now where developers are unhappy with Boost because we don't include 32-bit/64-bit builds in the name mangling.

These same folks decide not to use name mangling in their own libraries, and as a result are running into constant hassles.

Note that this isn't an issue of different compilers, but rather debug | release, and 32-bit | 64-bit builds with the same compiler.

Here's more evidence that any mangling should be off by default but configurable.   The current mangling scheme isn't detailed enough for some (and I can think of a number of unixy situations where having release/debug 32/64 in the name might make sense....  but not all), too detailed for others, and inflicts a
lot of unnecessary complexity on basically everybody else.  Apparently no one scheme will do.

Makes sense.
 


Also note that these guys aren't in the 'getting started' phase, they know how they like their mangling.   It isn't asking much of them to go to the 'mangling' section of the docs and configure it as they want it.

Actually, they have no idea what mangling is. They say they don't want it when I suggest it. They don't understand that the "It just works" approach they like relies on name mangling. They just want to download a Windows VC++ installer, click on check boxes with choices they understand, and click the "Install" button. If you asked them if the VC++ libraries should use mangled names, at least some of them would say "no"!

The choices they understand would include "static linking", "dynamic (DLL) linking", "release", "debug", "32-bit", "64-bit", "single-threaded", "multi-threaded".

When they want to use a library, they expect to give their IDE's Property Manager a single "Additional Libraries Directories" path, and then linking to the correct variant "just works". The idea of having to specify a different path for each build variant wouldn't fly.

--Beman