|
Boost : |
From: Edward Diener (eddielee_at_[hidden])
Date: 2004-12-04 15:28:04
Rene Rivera wrote:
> Edward Diener wrote:
>> Rene Rivera wrote:
>>> Edward Diener wrote:
>>>> In all the dlls and libs which I have ever created as a Windows
>>>> programmer I have followed this pattern.
>>>
>>> I haven't. For me the choice of runtime has always been independent
>>> of the type of product I'm building.
>>
>> When building products for yourself, you can choose your own mix.
>> When distributing 3rd party libraries which use auto-linking, you
>> need to decide how that should work for others.
>
> I didn't realize auto-linking was part of this argument. So far, as
> the subject says, we are talking about *testing* not auto-linking.
I was originally responding to Mr. Ramey's idea that static libs normally
use the static RTL and dlls normally use the dynamic RTL. This goes for when
libraries are built. I think that other modules that use the library should
normally work the same way unless the end-programmer wants to change it
manually.
>
>> I still think that
>> auto-linking should be dynamic rtl-dll and static rtl-static lib. Of
>> course a more flexible system might allow auto-linking to be turned
>> off and the end-programmer allowed to manually choose.
>
> You mean like the currently implemented flexible system that allows
> you to turn off auto-linking and build or use any variant you want?
I am glad to hear it. I thought the auto-link defaults were wrong but
perhaps I am mistaken. My impression was that the auto-link default for
building a static library uses the dynamic version of the RTL.
>
>>>> When distributing third-party libraries I think it is normal to
>>>> distribute either an all dll system, with all dlls using the dll
>>>> version of the compiler's run-time library, or a single
>>>> executable, with all libraries linked being static libraries
>>>> which use the compiler's static version of the run-time library.
>>>
>>> That is not a binary comparison. It's common to distribute
>>> executables with dlls and use the dynamic runtime. It's also common
>>> to distribute libs that use the dynamic runtime, so that users can
>>> build either exes or dlls from that library.
>>
>> What about the user who wants to use one's 3rd party library and
>> wants to distribute the final executable as a self-contained file not
>> relying on any other dlls ? This can not be done if you only have
>> libraries, whether static or dynamic, which use the run-time dlls. Of
>> course you may argue that a user who wishes to do this is not very
>> common, but my experience is that they are, and are pretty adamant
>> that such a scenario should be supported by 3rd party libraries which
>> they use.
>
> OK, I must be confused... You made the binary choice comparison. I
> made the counter that it's not possible or desirable to make such
> binary choices as it's up to he user what they need. And now you are
> siding with what I said. Which argument are you trying to make?
My argument is that default auto-link configuration, whether building or
testing, should be that libs use the static library version of the RTL and
any other libraries they use and that dlls use the dynamic library version
of the RTL and any other libs they use. Without auto-link programmers
building modules are free to do whatever they want.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk