Is there a preferred canonical way to distribute development packages (for example a DLL and headers) to developers (without source) on windows?
Coming from a Linux background my preference is split a project into three packages:
- A runtime - e.g.
libfoo-1.2.3.rpm
containing/opt/foo/lib/libbar.so -> /opt/foo/lib/libbar.so.1.2.3
- A development package - e.g.
libfoo-devel.1.2.3.rpm
containing/opt/foo/include/bar.h
- A source package - e.g.
libfoo.1.2.3-src.tgz
containing the source and build machinery
I expect few windows developers would complain if given a zip file with a similar directory layout. E.g.
foo-devel.zip:
foo/doc/foobar.pdf
foo/include/bar.h
foo/lib/libbar.dll
foo/lib/libbar.lib
for completeness only (off-topic) the run-time might be:
foo-runtime.zip:
foo/doc
foo/lib/libbar.dll
or:
foo-runtime.msi
- install libbar.dll
to an appropriate location
However I am still curious if there is actually a preferred way of doing it?
For example should you provide a foo-devel.msi to be installed on the build machine?
I am not interested in the question what should go into the library. Anyone who is can see for example Distributing (native C++) libraries on windows
It still is worth bearing in mind ABI compatibility issues if providing a C++ interface rather than only a C one.
Another related question is Is there a best practices guide to distributing native C libraries for Windows?. That question covers the what but this one asks how.