Qt5 dependencies on Windows are quite heavy
Qt 5.0.0 RC1 was released yesterday. I installed it to find out what is required to deploy a simple Qt5Widgets application.
Here is the dependency hierarchy on Windows (excluding platform libraries):
Qt5Widgets (4MB) depends on
- Qt5GUI (2.7MB)
** libGLESV2 (0.7MB)
*** D3DCompiler_43 (2MB)
*** libEGL (0.06MB) (not a hard-dependency but even the simplest app doesn't run without it)
- Qt5Core (3.5MB)
** icuuc49 (1MB)
** icuin49 (1.3MB)
** icudt49 (17.1MB)
If you want to use any function from the QtConcurrent namespace, Qt5Concurrent (18 KB) should be deployed as well. A console application or a service that just uses Qt5Core would require Qt5Core + 3 ICU libraries = ~23MB. "ICU":http://site.icu-project.org/ is the "new localization backend":http://qt-project.org/wiki/Qt-5-ICU for Qt5. A simple Qt4 GUI app requires 10.3 MB of Qt libraries (Core+GUI).
I checked several Qt-based Windows applications I use (Clementine, VLC, CppCheck, Calibre, CMake-GUI, Doxywizard, Spideroak etc.) Most of them deploy shared libraries and Qt takes a significant percentage of the disk footprint. That footprint would be more than doubled for the smaller of these applications if they switched to Qt5.
I wonder whether ICU is necessary for just visible string translations and QString Unicode support. If not, maybe ICU may become optional and Qt5 may become somewhat more suitable for library and widget-based application development.
A QtQuick application would just drop 4MB Qt5Widgets dependency but depend, besides the ~28MB of libraries, on the following:
- Qt5Quick (1.9MB)
** Qt5Qml (1.3MB)
** Qt5V8 (2.4MB)
** Qt5Network (0.8MB)
GRAND TOTAL: 34.7MB
For the time-being I will stick with Qt4.
- Qt5GUI (2.7MB)
You can compile Qt5 with -no-icu flag set.
ICU is a hard requirement for WebKit (only).
[quote author="Lukas Geyer" date="1354872607"]ICU is a hard requirement for WebKit (only).[/quote]
Qt5Core in 5.0.0 RC1 on Windows hard-depends on ICU libraries. I tested it, verified with Dependency Walker as well.
Yes, because if you build Qt 5 with ICU to enable WebKit QtCore will also take advantage of it.
As sierdzio has already mentioned you can disable ICU using the -no-icu flag so that QtCore should no longer depend on it. But you can't build WebKit without ICU.
You might be able to build Qt 5 without ICU and WebKit with ICU using different configurations, but I haven't tried that yet.