[Interest] Replacing icudtXX.dll without rebuilding Qt?

Konstantin Tokarev annulen at yandex.ru
Sun Jan 17 15:44:22 CET 2016



17.01.2016, 17:30, "Elvis Stansvik" <elvstone at gmail.com>:
> 2016-01-17 14:48 GMT+01:00 Elvis Stansvik <elvstone at gmail.com>:
>>  Hi all,
>>
>>  In an effort to cut down on the size of the standalone ZIP
>>  distribution of my small command line tool [1] which only uses QtCore,
>>  and which to my knowledge does not depend on any localization
>>  features, I'd like to try replacing the icudtXX.dll that I currently
>>  take from the Qt bin directory with a custom one built using the ICU
>>  Data Library Customizer [2].
>
> I've slightly misunderstood how the ICU Data Library Customizer works.
> I thought it would generate a icudtXX.dll, but it generates a .dat
> file to be used in the compilation of ICU.
>
> So now that I know that I have to re-build ICU with this .dat file, my
> question are:
>
> 1. Is it safe to replace the three icuXXXX.dll DLL files without also
> re-building Qt, provided that I use the exact same ICU version,
> compiled with the exact same compilation flags, but with a different
> .dat file?

You can rebuild ICU in a way that .dat file is loaded at runtime and you can do any customizations you like without messing with libraries. See documentation on ICU site.

>
> 2. If so, which parts of the .dat file can I safely exclude with the
> ICU Data Library Customizer? I don't think I need any of the features
> which Qt uses ICU for, but are there some parts that must be included
> for Qt to function at all?
>
> 3. Where can I find out how the ICU bundled with official Qt builds was built?
>
> Cheers,
> Elvis
>
>>  My questions are:
>>
>>  1. Is this is safe to to replace icudtXX.dll without replacing the
>>  other two ICU DLLs (icuinXX.dll and icuucXX.dll) and re-building the
>>  Qt library itself?
>>
>>  2. Are the ICU build options / data config used for the ICU DLLs that
>>  comes bundled with official Qt builds documented somewhere? I tried
>>  looking in the `qtqa` repo, but found no ICU build scripts or similar
>>  there. I know that Qt hosts some pre-built ICU version at [3]. Are
>>  these the ones shipped with official Qt builds? If so, how were they
>>  built?
>>
>>  I'm currently using MSVC on Appveyor to build my standalone ZIP, and
>>  I'm using the official builds of Qt. I know I can completely cut out
>>  the dependency on ICU by re-building Qt, but I'm looking for solution
>>  where I don't have to do that.
>>
>>  If it's unsafe to replace icudtXX.dll without also re-building Qt,
>>  I'll abandon the idea. If it's possible if I also replace the other
>>  two ICU DLLs, then I'll consider it.
>>
>>  I know people don't really care if the size of a package is 4 MB or 11
>>  MB, but it just feels a bit silly that 60% of the binaries in my
>>  package are not really needed.
>>
>>  Thanks in advance.
>>
>>  Elvis
>>
>>  [1] https://github.com/estan/protoc-gen-doc
>>  [2] http://apps.icu-project.org/datacustom/ICUData54.html
>>  [3] http://download.qt.io/development_releases/prebuilt/icu/prebuilt/
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest

-- 
Regards,
Konstantin



More information about the Interest mailing list