1

I am deploying a Qt project on Windows with MinGW which spits out a dozen or so DLLs that are required by Qt, but not directly by my project. Some of these are:

  • pcre2
  • zlib
  • harfbuzz
  • freetype
  • iconv
  • libpng
  • libstdc++

Am I obligated to include licenses for these DLLs as well as the Qt license? What is stopping the Qt Foundation from adding extra 3rd-party libraries in future updates, such that my build system picks up a newer version of Qt, deploys my project and misses the extra licenses?

What if I statically link all of these DLLs to Qt when I build the framework, so that I only include Qt DLLs in my project? Am I still required to include licenses for these projects?

I want to ensure I am respecting Copyright law but am rather confused... Note also that some of these libaries have completely different licenses from one another...

I've seen this question but it does not explain what would happen if the libraries were statically linked instead.

agregate
  • 119
  • 1
  • So when you say static linking, do you mean statically link pcre2, zlib, etc. but then to deploy DLLs of Qt libraries only? I would have to check, but I think all of those (pcre2, zlib, etc.) are permissively licensed. But you would have to see for each one what the precise requirements are. A suggestion would be to look in the Qt distribution itself to see how the Qt Company themselves comply with those licenses. – Brandin Jun 12 '23 at 04:27
  • @Brandin as in statically link them into the Qt DLLs. You're right that they are quite permissive. I'm wondering if it's worth all the hassle baking them in if I can comply by simply stating their licenses in my software... – agregate Jun 12 '23 at 04:38
  • For permissive licenses like MIT, zlib, etc., whether you distribute the software as a DLL or by staticly linking it does not matter. Normally LGPL is the only license where "dynamic/static linking" makes any significance to the license. That said, I suspect that if you add stuff to the Qt libraries, even open source components, you might make it more difficult for an end-user to replace that Qt library with his own version. That's not forbidden, of course -- but remember that LGPL requires that you let users replace your version of the library with their own version if they want. – Brandin Jun 12 '23 at 06:52
  • If you made changes to the build scripts to accomplish the custom Qt library (e.g. to get a single DLL with all the stuff built in), it would probably be best if you distribute that custom build script as well. This is more about LGPL license compliance, which requires that users can rebuild custom version of the LGPL components if they want. – Brandin Jun 12 '23 at 06:54
  • 1
    If you made changes to the build scripts to accomplish the custom Qt library (e.g. to get a single DLL with all the stuff built in), it would probably be best if you distribute that custom build script as well. - which is exactly what I don't want to do. I think that more than justifies leaving the build system how it is, which already allows users to rebuild components with no modification to the usual process – agregate Jun 12 '23 at 06:56
  • It depends on what problem you're trying to solve. Is there a technical reason to reduce the number of DLLs (e.g. you just want 1 DLL)? Whether you link (say) PCRE in statically or not, your license requirement is the same -- see for example the PCRE license here: https://www.pcre.org/original/license.txt – Brandin Jun 12 '23 at 07:00
  • @Brandin It was only to clean up the dependencies so users do not have a folder full of DLL's, but then I wondered how these licenses are handled when Qt is built statically (such that the programmer may not be immediately aware that they are including a bunch of 3rd party libraries and thus not conforming to the license requirements of these projects). I've played around with Dependency Walker so I have an idea now of exactly what is being used, so like PCRE, I can go now through each dependency and add their respective licenses to mine. – agregate Jun 12 '23 at 07:35

0 Answers0