Fix build instructions (-j <n>).
[mirror/qt/qt5.git] / README
1 HOW TO BUILD QT5
2 ================
3
4
5  Synopsis
6  ========
7
8      See http://qt-project.org/wiki/Building_Qt_5_from_Git for instructions
9      on building Qt 5.
10
11    New dependencies in Qt 5
12    ------------------------
13
14      Linux: On systems running X11, the XCB libraries are required for
15      the platform plugin to build. qtbase/src/plugins/platforms/xcb/README
16      lists the required packages.
17
18      Qt 5 can make use of the ICU libraries providing Unicode and Globalization
19      support (see http://site.icu-project.org/). They are required for building
20      QtWebKit.
21      On Linux, they will be auto-detected.
22      On Windows, they need to be manually installed and the "include" and "lib"
23      folders of the ICU installation must be appended to the INCLUDE and LIB
24      environment variables after calling the Windows SDK setup script.
25      The "bin" folder of the ICU installation should be appended to the PATH
26      environment variable in order to for the DLLs to be found at run-time.
27
28    Linux, Mac:
29    -----------
30
31      cd <path>/qt-everywhere-opensource-src-<version>
32      export PATH=$PATH:$PWD/qtbase/bin
33      ./configure -prefix $PWD/qtbase -opensource -nomake tests
34      ./build -j 4
35
36    Windows:
37    --------
38
39      Open a Windows SDK (7.0, 7.1 or later) command prompt. Ensure that Perl
40      version 5.12 or later and Python version 2.7 or later can be found in the
41      path.
42
43      cd <path>\qt-everywhere-opensource-src-<version>
44      set PATH=%PATH%;%CD%\qtbase\bin;
45      configure -prefix %CD%\qtbase -opensource -nomake tests
46      perl build
47
48      For MinGW (gcc version 4.6 or later), ensure that the compiler can
49      be found in the path.
50
51      The build script will use jom if it's found in the path, which means you can
52      use -j <n> options on Windows as well. If not, the /MP option is added to the
53      compile options of the Microsoft Visual Studio compiler, to use all available
54      cores for batch building.
55
56  More details follow.
57
58  Building QtWebKit
59  =================
60
61    Linux, Mac:
62    -----------
63
64      The tools bison, flex and gperf which are required for building.
65
66      cd qtwebkit
67      export WEBKITOUTPUTDIR=$$PWD/WebKitBuild
68      perl Tools/Scripts/build-webkit --qt --qmake=../qtbase/bin/qmake --install-libs=<install dir> --release --makeargs=$MAKEFLAGS
69
70    Windows:
71    --------
72
73      The tools bison, flex and gperf which are required for building are
74      provided for convenience in the folder gnuwin32\bin.
75
76      set PATH=%PATH%;%CD%\gnuwin32\bin
77      cd qtwebkit
78      set WEBKITOUTPUTDIR=%CD%/WebKitBuild
79      perl Tools\Scripts\build-webkit --qt --qmake=..\qtbase\bin\qmake.exe --install-libs=<install dir> --release --makeargs=%MAKEFLAGS%
80
81  Get The Submodules
82  ==================
83
84  Obtaining the source code is described in detail at
85  http://wiki.qt-project.org/Main_Page and
86  http://qt-project.org/wiki/Get_The_Source.
87
88  Cloning Qt5 does not automatically clone all submodules.
89  To get the submodules, it is recommended to use the `init-repository' script.
90
91    ./init-repository
92
93  See `./init-repository -help' for full documentation on the many supported
94  options.
95
96
97  Update The Submodules (optional)
98  ================================
99
100  After a plain `git clone' and `init-repository', you will have each submodule
101  checked out to a particular SHA1.  This combination of SHA1s is guaranteed to
102  have passed some basic acceptance testing.
103
104  If (and only if!) you need newer versions of some submodules, you can manually
105  fetch and/or pull and/or reset any modules you like, or use the qt5_tool to
106  pull all modules:
107
108    ./qtrepotools/bin/qt5_tool -p
109
110  NOTE! As soon as you change the SHA1 of any submodule, you are using a
111  combination of modules which is potentially untested and broken!  If you want
112  something which is more likely to compile, stick to the module SHA1s provided
113  in this repository.
114
115
116  Install The Git Grafts (optional)
117  =================================
118
119  If you want to be able to connect the Qt5 and Qt4 development history, you
120  may set up git grafts with the following command:
121
122    git submodule foreach '../qtrepotools/bin/git-qt-grafts <path_to_history>'
123
124
125  Build!
126  ======
127
128  A typical `configure; make' build process is used.
129
130  Some relevant configure options (see configure -help):
131
132  -release              Compile and link Qt with debugging turned off.
133  -debug                Compile and link Qt with debugging turned on.
134  -nomake tests         Disable building of tests to speed up compilation
135  -nomake examples      Disable building of examples to speed up compilation
136  -confirm-license      Automatically acknowledge the LGPL 2.1 license.
137
138  Example for a release build:
139  (adjust the `-jN' parameter as appropriate for your system)
140
141    ./configure -prefix $PWD/qtbase -opensource
142    make -j4
143
144  Example for a developer build:
145  (enables more autotests, builds debug version of libraries, ...)
146
147    ./configure -developer-build -opensource
148    make -j4
149
150  See output of `./configure -help' for documentation on various options to
151  configure.
152
153  The above examples will build whatever Qt5 modules have been enabled by
154  default in the build system.
155
156  It is possible to build selected modules with their dependencies by doing
157  a `make module-<foo>'.  For example, to build only qtscript and qtwebkit,
158  and the modules they depend on:
159
160    ./configure -prefix $PWD/qtbase -opensource
161    make -j4 module-qtscript module-qtwebkit
162
163  This can save a lot of time if you are only interested in a subset of Qt5.
164
165
166  Hints
167  =====
168
169  Shadow builds are possible, but not as well tested/supported as in-source
170  builds.
171
172  The submodule repository qtrepotools contains useful scripts for
173  developers and release engineers. Consider adding qtrepotools/bin
174  to your PATH environment variable to access them.
175
176  The qt5_tool in qtrepotools has some more features which may be of interest.
177  Try `qt5_tool --help'.