Compiling-ICU-with-MinGW

From Qt Wiki
Revision as of 07:14, 10 February 2015 by Maintenance script (talk | contribs)
Jump to navigation Jump to search

Compiling ICU with MinGW (for adding Unicode support)

Qt 5 / QtWebkit requires ICU, which MinGW distributions do not ship.

Pre-built packages

The ICU Project site [site.icu-project.org] provides pre-compiled libraries for both 32 and 64 bit. However, these depend on the Microsoft Visual C++ 2010 runtime being installed.

download.qt.io [download.qt.io] also hosts packages for the MinGW toolchains Qt ships.

Inside MSYS2 shell, a pre-built ICU can be obtained. MSYS2 also contains pre-built dynamic Qt & QtCreator (and static Qt) with ICU & OpenSSL support.

Compiling on your own

Requirements

  • Either use MSYS or use MSYS2.
  • Working MinGW, or MinGW-w64 toolchain.
    • Load MinGW or MinGW-w64 toolchains.
    • NOTE: Do not use (or try to avoid using) different type of toolchains for building different sub-components for the same/main project, targeted for same platform/OS. If you are using MinGW-w64 toolchains from MSYS2\mingw32 or MSYS2\mingw64, then for building main project & all of its sub-components, use same MSYS2 toolchains. If you are using MinGW toolchain, then for building all of your sub-components & main project, use same MinGW toolchain. If you are using MinGW-w64 toolchains from “MinGW-builds”, then for building all sub-components & main project, use same MinGW-builds toolchains.

How to build

  • Download latest ICU4C source code from http://site.icu-project.org/download (e.g. icu4c-52_1-src.zip), unzip
  • Either start MSYS-shell, or start MSYS2-shell:
    • Start a MSYS shell command prompt (C:\msys\1.0\msys.bat)
    • Or, start MSYS2 shell command prompt (C:\msys2\msys2_shell.bat)
      • See in MSYS2 page, how to prepare MSYS2-shell with build/compile related tools & dependencies & toolchains
  • Inside MSYS or MSYS2 shell, run/execute below command:
  • Check that gcc is in PATH, otherwise add it:
    • If using MSYS shell, and if MinGW (32bit) is installed inside /c/mingw32 (C:\mingw32\) directory, then execute this:
    • If using MSYS2 shell, execute this, if you are building for 32bit:
    • If using MSYS2 shell, execute this, if you are building for 64bit:
  • Run configure && build:
    This will generate a release shared build that you can use in both a debug and release build of Qt.
  • To link ICU statically (e.g. for a static release build of Qt), you have to append ‘—enable-static —disable-shared’ :
  • To link ICU statically and build it in debug mode (e.g. for a static debug build of Qt), you have to prepend ‘—enable-debug —disable-release’ to the arguments:
  • Finally, run make && make install

Using it

  • Add the include, lib folders to your compilation environment, e.g. for cmd.exe (Cmd-shell) :
  • Add the include, lib folders to your compilation environment, e.g. for MSYS2-shell (or for MSYS-shell) :

When you now run Qt’s configure.exe ICU should be detected, and Qt links against the libraries.

Categories: