Compilation ICU 65.1

,

Voilà comment j'ai procéder pour réussir à compiler la library ICU en version 65.1 sous Windows, sans passer par cygwin.

Sous Windows 10

  1. Télécharger les packages icu4c-65_1-src.zip et icu4c-65_1-data.zip depuis la page: https://github.com/unicode-org/icu/releases/tag/release-65-1
  2. Extraire icu4c-65_1-src.zip pour obtenir un répertoire icu/
  3. Extraire icu4c-65_1-data.zip pour obtenir un répertoire data/
  4. Ecraser le répertoire icu/source/data/ avec le répertoire précédent.
  5. Ouvrir un command prompt dans le répertoire icu/
  6. Appliquer le patch (voir lien ci-dessous) pour ICU:
    ..\busybox64.exe patch -p1 < ..\icu-65.1-win.patch
  7. Charger l'environment de construction Visual Studio:
    call "D:\Apps\VisualStudio2017_CE\VC\Auxiliary\Build\vcvarsall.bat" amd64
  8. Mettre à jour le PATH pour accéder aux binaires et à python pendant la construction:
    set PATH=W:\Projects\NervSeed\deps\build\icu\bin64;%PATH%
    set PATH=W:\Projects\NervSeed\tools\windows\python-3.6\bin;%PATH%
  9. Lancer la construction:
    msbuild source\allinone\allinone.sln /p:Configuration=Release /p:Platform=x64 /p:SkipUWP=true
  10. Executer les tests:
    source\allinone\icucheck.bat x64 Release

Une fois la construction terminée on obtient 3 sous-répertoires bin64/include/lib64 qui contiennent les binaires/headers/libraries (et qui peuvent être déplacés ailleurs bien sûr).

Notes

  • Avec Visual Studio 2017, sans patch, on obtient des erreurs car la librairy ucrt.lib n'est pas trouvée: tout simplement parce que les headers/library patch du Windows SDK sont introuvable dans les fichiers projects. (⇒ correction du fichier source/allinone/Build.Windows.ProjectConfiguration.props build.windows.projectconfiguration.props)
  • Par ailleurs, ce projet utilise python pour compiler les “data” de ICU, mais les lignes de commande font par défaut référence à “py” pour exécuter python alors que la version dont je dispose s'appelle bien python.exe (⇒ corrections des fichiers: source/data/makedata.mak makedata.mak et source/test/testdata/testdata.mak testdata.mak)
  • Important: il ne faut pas renommer le répertoire racine icu pour effectuer la construction, sinon vous aurez des erreurs dans les tests finaux (et le projet “testdata” ne semble se construire du tout ?)

Ressources

References