Problem: MSVC lib names are too complex#4195
Conversation
Solution: Give an option to use short names in line with what other platforms (including mingw on windows) use. In particular, the shared library names with toolset and version down to the patch are not friendly to having just the DLL updated for e.g. security updates.
|
Marked draft to give time for feedback. Currently, the CMake build names things in MSVC/Visual Studio like:
... where all other platforms are just In favor of the current naming scheme, it's easier to build a bunch of toolset variants and distribute them together. This naming scheme is also a bit misleading for a couple of reasons this patch does not address:
Since this naming scheme has been that way for many, I left it as default. An alternative approach would be to allow the user to define each of these postfixes directly via CMake cache variables, but it's more cumbersome to set them all. I'm also thinking of packaging systems like Conan where it's easier to add a single option for the variant then coordinating 4 variables. |
|
The naming scheme is taken from boost, explained 1 as well. The toolset might not make sense vor VS 2015+, but for older versions it is important to have it IMHO. |
|
The current naming makes zero sense. Where is the 32 vs. 64 bit flag? ARM vs Intel? MSVC vs Intel C++? There should be two flavors: libzmq.dll and libzmqd.dll, where the d suffix denotes a debug build, and the only reason for the d suffix is to avoid inadvertently shipping a debug build. The different variants (static vs dynamic CRT, 32 vs 64, ARM vs Intel, MS vs Intel vs other compilers) must be done with subfolders. On the same note, the debug info must always be created. For Windows that's /Zi and /DEBUG for all build flavors. The PDB matching each release must be archived (not shipped) so crash dumps and minidump can be analyzed with symbols and source. Not building with symbols makes crash dumps / minidumps largely useless, and you cannot build symbols after the fact. |
Solution: Give an option to use short names
in line with what other platforms (including
mingw on windows) use.
In particular, the shared library names with
toolset and version down to the patch are not
friendly to having just the DLL updated for
e.g. security updates.