i'm building statically linked Qt against statically linked binaries of libpng/libjpeg (but also libz, though that's less critical).
to do this, i'm configuring my builds via
this approach worked fine for the last few years, as Qt didn't provide transitive usage requirements (i had do explicitly link my qt-based binaries against my libpng (or libjpeg)
Qt-5.13 pulls in transitive usage requirements but brings the 3rdparty usage requirements for those 3rdparty libraries, too. however the builds are not relocatable any more.
cmake will try to link via:
the paths to the static qt libraries are resolved correctly (locally), but for the 3rdparty libraries, it includes the buildserver path.
i'm not sure what's the best way to resolve it. possible options:
- don't bring transitive usage requirements for system libraries if they are static
- bundle static system libraries with qt (copy them into INSTALL_PREFIX/libs)
note: for zlib it's merely a cosmetic issue because zlib is in qt prefixes all symbols, so it won't name-clash with a different zlib in the same DSO. for libpng and libjpeg the situation is different: it's not namespaced (by prefixing symbols) and one cannot mix binaries / headers of different version (i cannot link against qt's libpng, but compile against my libpng headers as the header version is encoded into the binary and it will cause run-time sanity checks / failures. same applies to libjpeg)