1 | This is Qt version 4.6.3 for OS/2 and eCS.
|
---|
2 |
|
---|
3 | This document contains a brief information on the OS/2 version of the Qt
|
---|
4 | library. Please read it carefully before starting your work. You may also
|
---|
5 | visit the project page at
|
---|
6 |
|
---|
7 | http://svn.netlabs.org/qt4/wiki
|
---|
8 |
|
---|
9 | to get more information and the latest news and also to report bugs.
|
---|
10 |
|
---|
11 | To get a brief list of OS/2-specific changes from release to release
|
---|
12 | please see the CHANGES.OS2 file included in this distribution.
|
---|
13 |
|
---|
14 | Please note that this version is binary incompatible with previous versions of
|
---|
15 | Qt 4 for OS/2! This is not a behavior of the original Qt library (where versions
|
---|
16 | with the same major number are usually binary compatible), but it is due to the
|
---|
17 | fact that we continue to add missing features to the OS/2 version ot Qt and this
|
---|
18 | cannot be done witout breaking the binary compatibility. On practice, this means
|
---|
19 | that you need to recompile your applications with the new version of the Qt
|
---|
20 | library in order to make them work with it.
|
---|
21 |
|
---|
22 |
|
---|
23 |
|
---|
24 | REQUIREMENTS
|
---|
25 |
|
---|
26 | In order to compile the Qt library and Qt-based applications, you will need
|
---|
27 | the following tools:
|
---|
28 |
|
---|
29 | - One of the OS/2 Warp 4, OS/2 Warp 4.5 or eComStation operating systems.
|
---|
30 |
|
---|
31 | - GCC compiler version 4.4.2 for OS/2, patched OpenWatcom linker and
|
---|
32 | GNU Make 3.81beta1 or above. The GCC compiler must be set up to use the
|
---|
33 | OpenWatcom linker for linking.
|
---|
34 |
|
---|
35 | If you do not have a working GCC environment with the above requirements, it
|
---|
36 | is recommended to download a ready-to-use GCC 4.2.2 distribution from here:
|
---|
37 |
|
---|
38 | ftp://ftp.netlabs.org/pub/qt4/gcc-4_4_2-complete-20091205.zip
|
---|
39 |
|
---|
40 | This distribution includes all tools necessary to compile and build the Qt
|
---|
41 | library from the source code. Just follow the installation instructions
|
---|
42 | contained in the README file inside this ZIP archive to set up the GCC
|
---|
43 | environment.
|
---|
44 |
|
---|
45 | Please note that starting from Qt 4.6.2, support for GCC 3.3.5 and earlier
|
---|
46 | versions of the compiler has been dropped and the Qt library will most
|
---|
47 | likely not build if you use one of these compilers. Later versions prior to
|
---|
48 | GCC 4.4.2 may work but they are not tested and not supported.
|
---|
49 |
|
---|
50 | - IBM RC (Resource Compiler) Version 5.00.007 (comes with OS/2 Toolkit 4.5)
|
---|
51 | or Version 4.00.011 (comes with eCS 2.0). Other versions may not work
|
---|
52 | correctly.
|
---|
53 |
|
---|
54 | There is also a set of optional tools which are necessary to enable the selected
|
---|
55 | features of the Qt library. If these tools are missing, the Qt configuration
|
---|
56 | script (discussed in section "COMPILING QT" below) will automatically disable
|
---|
57 | the corresponding feature:
|
---|
58 |
|
---|
59 | - Perl 5.8.2 or above. This is required if you want to perform a shadow build
|
---|
60 | of the Qt library (which is a recommended way to go). Please refer to
|
---|
61 | section "COMPILING QT" for more information about shadow builds. Recent
|
---|
62 | builds of Perl for OS/2 are available here:
|
---|
63 |
|
---|
64 | http://os2ports.smedley.info/index.php?page=perl
|
---|
65 |
|
---|
66 | - MAPSYM 4.00.000 (Oct 4 2001) to enable generation of symbol (.SYM) files for
|
---|
67 | DLLs and executables. This tool comes with OS/2 Toolkit 4.5. Note that other
|
---|
68 | versions of this tool may not work correctly.
|
---|
69 |
|
---|
70 | - LxLite 1.3.3 or above (not tested) to enable the compression of DLLs and
|
---|
71 | executables (which saves hard disk space and application startup time). If
|
---|
72 | you use a recent version of eComStation (e.g. 2.0 rc6) you will already have
|
---|
73 | LxLite installed. Otherwise, you may take it from here:
|
---|
74 |
|
---|
75 | http://www.os2site.com/sw/util/archiver/lxlt133.zip
|
---|
76 |
|
---|
77 | - CUPS 1.3.11 or later to support printing in Qt. The CUPS libraries are
|
---|
78 | available at:
|
---|
79 |
|
---|
80 | http://download.smedley.info/cups-1.3.11-os2-20090807.zip
|
---|
81 |
|
---|
82 | Linking against eCUPS also requires pthread.lib:
|
---|
83 |
|
---|
84 | http://web.os2power.com/download/lib/pthread-20100217-os2.zip
|
---|
85 |
|
---|
86 | - OpenSSL 0.9.8o or later to support OpenSSL in Qt. The OpenSSL libraries are
|
---|
87 | available at:
|
---|
88 |
|
---|
89 | http://bauxite.sakura.ne.jp/tmp/os2/openssl-1.0.0a-os2knix-20100706-runtime.zip
|
---|
90 | http://bauxite.sakura.ne.jp/tmp/os2/openssl-1.0.0a-os2knix-20100706-dev.zip
|
---|
91 |
|
---|
92 | - MySQL 5.1 or later for the MySQL Qt plugin. The MySQL libraries are
|
---|
93 | available at:
|
---|
94 |
|
---|
95 | http://download.smedley.info/mysql-5.1.51-os2-20101001.zip
|
---|
96 |
|
---|
97 | Note that you will also need the above OpenSSL libraries and pthread.lib to
|
---|
98 | be able to use this MySQL build. The MySQL Qt plugin itself will require
|
---|
99 | OpenSSL DLLs in your LIBPATH at runtime.
|
---|
100 |
|
---|
101 | - PostgersSQL 9.0.1 or later to support the PostgresSQL Qt plugin. The
|
---|
102 | PostgresSQL libraries are available at:
|
---|
103 |
|
---|
104 | http://download.smedley.info/postgresql-9.0.1-os2-20101108.zip
|
---|
105 |
|
---|
106 | Note that you will also need libc064x.dll for this PostgresSQL build:
|
---|
107 |
|
---|
108 | http://download.smedley.info/libc064x.zip
|
---|
109 |
|
---|
110 | Note that you will also need the above OpenSSL libraries and pthread.lib to
|
---|
111 | be able to use this PostgresSQL build. The PostgresSQL Qt plugin itself will
|
---|
112 | require OpenSSL DLLs in your LIBPATH at runtime.
|
---|
113 |
|
---|
114 |
|
---|
115 |
|
---|
116 | SETTING UP THE ENVIRONMENT
|
---|
117 |
|
---|
118 | First of all, make sure that your GCC environment is set up and meets the
|
---|
119 | specified requirements. To perform a quick check, you may run the following
|
---|
120 | command:
|
---|
121 |
|
---|
122 | gcc --version && make --version && wl /version
|
---|
123 |
|
---|
124 | If the setup is done properly, it will print the versions of the key tools
|
---|
125 | to the console.
|
---|
126 |
|
---|
127 | The next step is to set up the Qt environment. If you installed the Qt
|
---|
128 | development libraries from the WPI archive (refer to section "USING OFFICIAL
|
---|
129 | BINARY QT ARCHIVES" below for more details about existing WPI archives), you
|
---|
130 | will only need to run the supplied "QtEnv.cmd" script which will do all the
|
---|
131 | setup job for you. The script is located in the directory where you installed
|
---|
132 | the developmnent libraries (or in the WPS folder created by the WPI installer).
|
---|
133 | Execute this script in a command line session to make it ready for building
|
---|
134 | Qt 4 applications (for example, using the "qmake" command follwed by "make"
|
---|
135 | for applications based on qmake project files which most of them are). If you
|
---|
136 | go that way, you may skip the rest of this section and proceed directly to
|
---|
137 | section "USING OFFICIAL BINARY QT ARCHIVES" below.
|
---|
138 |
|
---|
139 | If you use the full source code ZIP distribution of the Qt library or work
|
---|
140 | directly with the Qt SVN tree, you will need to set up the environment yourself
|
---|
141 | by performing the following steps:
|
---|
142 |
|
---|
143 | - Add the "bin" subdirectory of the directory where you unpacked the Qt4
|
---|
144 | source tree to PATH and BEGINLIBPATH, like this:
|
---|
145 |
|
---|
146 | set PATH=D:\Coding\Qt4\bin;%PATH%
|
---|
147 | set BEGINLIBPATH=D:\Coding\Qt4\bin;%BEGINLIBPATH%
|
---|
148 |
|
---|
149 | - Add the system DLLs to the GCC library path with the following command:
|
---|
150 |
|
---|
151 | set LIBRARY_PATH=C:\OS2\DLL;C:\MPTN\DLL;%LIBRARY_PATH%
|
---|
152 |
|
---|
153 | where C: is your boot drive.
|
---|
154 |
|
---|
155 | - Make sure CMD.EXE is your command line processor (the generated makefiles
|
---|
156 | will rely on its 'copy', 'if' and other commands). If you have a Unix shell
|
---|
157 | (SH.EXE) in your environment, you may need to force GNU make to use CMD.EXE
|
---|
158 | by executing the followingn command:
|
---|
159 |
|
---|
160 | set MAKESHELL=C:\OS2\CMD.EXE
|
---|
161 |
|
---|
162 | where C: is your boot drive.
|
---|
163 |
|
---|
164 | Note that the QTDIR environment variable used in previous Qt versions is not
|
---|
165 | used in Qt4 anymore. Therefore, there is no need to set this variable
|
---|
166 | explicitly.
|
---|
167 |
|
---|
168 | There is also no need to set the QMAKESPEC variable explicitly. If it is absent,
|
---|
169 | qmake will use the specification stored in the <Qt4_Home>/mkspecs/default
|
---|
170 | directory, which on OS/2 always refers to the "os2-g++" specification, the only
|
---|
171 | one supported at the present time.
|
---|
172 |
|
---|
173 | NOTE:
|
---|
174 |
|
---|
175 | It is especially important to make sure that there are no traces of any
|
---|
176 | other Watcom or OpenWatcom installation in the environment where you build
|
---|
177 | Qt as it will interfere with the patched OpenWatcom linker we use. This
|
---|
178 | basically means removing all environment variables containing "WATCOM" in
|
---|
179 | their names and also removing references to all those Watcom installations
|
---|
180 | from PATH.
|
---|
181 |
|
---|
182 |
|
---|
183 |
|
---|
184 | SETTING UP OPTIONAL TOOLS
|
---|
185 |
|
---|
186 | The following list describes the steps necessary to set up the optional tools
|
---|
187 | that the Qt library depends on:
|
---|
188 |
|
---|
189 | - Unzip the CUPS libraries to some directory and set the following environment
|
---|
190 | variables to tell the Qt configure script its location:
|
---|
191 |
|
---|
192 | set CUPS_INCLUDEPATH=<path_to_CUPS>\include
|
---|
193 | set CUPS_LIBS=-L<path_to_CUPS>\lib -llibcups.a -L<path_to_pthread> -lpthread.lib
|
---|
194 |
|
---|
195 | - Unzip the OpenSSL libraries to some directory and set the following
|
---|
196 | environment variables to tell the Qt configure script its location:
|
---|
197 |
|
---|
198 | set OPENSSL_INCLUDEPATH=<path_to_OpenSSL>\include
|
---|
199 | set OPENSSL_LIBS=
|
---|
200 |
|
---|
201 | Note that you will also need to place OpenSSL DLLs to BEGINLIBPATH (if they
|
---|
202 | are not already in your LIBPATH) so that Qt applications can find them at
|
---|
203 | runtime:
|
---|
204 |
|
---|
205 | set BEGINLIBPATH=<path_to_OpenSSL>\dll;%BEGINLIBPATH%
|
---|
206 |
|
---|
207 | - Unzip the MySQL archive to some directory and set the following environment
|
---|
208 | variables to tell the Qt configure script the library location:
|
---|
209 |
|
---|
210 | set MYSQL_INCLUDEPATH=<path_to_MySQL>\include'
|
---|
211 | set MYSQL_LIBS=-L<path_to_MySQL>\lib -lmysqlclient_r -L<path_to_OpenSSL>\lib -llibssl -llibcrypto -L<path_to_pthread> -lpthread
|
---|
212 |
|
---|
213 | Note that you will also need to place OpenSSL DLLs to BEGINLIBPATH (as
|
---|
214 | described above) because the MySQL plugin links statically to them and Qt
|
---|
215 | will not be able to load it otherwise.
|
---|
216 |
|
---|
217 | - Unzip the PostgresSQL archive to some directory and set the following
|
---|
218 | environment variables to tell the Qt configure script the library location:
|
---|
219 |
|
---|
220 | set PSQL_INCLUDEPATH=<path_to_PostgresSQL>\include'
|
---|
221 | set PSQL_LIBS=-L<path_to_PostgresSQL>\lib -llibpq -L<path_to_OpenSSL>\lib -llibssl -llibcrypto -L<path_to_pthread> -lpthread
|
---|
222 |
|
---|
223 | Note that you will also need to place OpenSSL DLLs to BEGINLIBPATH (as
|
---|
224 | described above) because the PostgresSQL plugin links statically to them and
|
---|
225 | Qt will not be able to load it otherwise.
|
---|
226 |
|
---|
227 | Note that you need to make sure that OpenSSL DLLs are in BEGINLIBPATH or in
|
---|
228 | LIBPATH before Qt attempts to load the SQL plugins for the first time. If it
|
---|
229 | fails to load them, it will cache a failure and will not retry even if the
|
---|
230 | plugins can be loaded later. To fix that, you need to delete the file
|
---|
231 | %HOME%\.config\Trolltech.ini where this cache is stored.
|
---|
232 |
|
---|
233 |
|
---|
234 |
|
---|
235 | COMPILING QT
|
---|
236 |
|
---|
237 | You should skip this section if you installed the Qt development libraries using
|
---|
238 | the WPI archive (that already contains compiled release versions of the
|
---|
239 | libraries) and proceed directly to the next section.
|
---|
240 |
|
---|
241 | When the environment is set up as described above, you may build the Qt library.
|
---|
242 | There are two distinct ways of doing this: in the source tree or in a separate
|
---|
243 | directory of your choice. In the first case, all results of the build process
|
---|
244 | (intermediate object files as well as final executables and DLLs) will be placed
|
---|
245 | right in the source tree. In the second case, they will be placed in the
|
---|
246 | separate directory -- this is called a shadow build.
|
---|
247 |
|
---|
248 | Shadow builds are the recommended way to go because they keep the source
|
---|
249 | directories clean and also allow to use the same source tree for creating any
|
---|
250 | number of builds, each with its own build options.
|
---|
251 |
|
---|
252 | To perform a shadow build, do the following steps:
|
---|
253 |
|
---|
254 | 1. Create a directory outside the Qt4 source tree.
|
---|
255 |
|
---|
256 | 2. Go to that directory.
|
---|
257 |
|
---|
258 | 3. Type:
|
---|
259 |
|
---|
260 | <source_tree>\configure.cmd
|
---|
261 |
|
---|
262 | where <source_tree> is the directory containing the Qt4 source tree. This
|
---|
263 | will create all necessary configuration files, headers, Makefiles and will
|
---|
264 | also build the qmake tool which is necessary to control the rest of the
|
---|
265 | build process (note that building qmake will take some time).
|
---|
266 |
|
---|
267 | 4. Once the configure process is finished, type:
|
---|
268 |
|
---|
269 | make
|
---|
270 |
|
---|
271 | Note that by the default the shadow build will produce the release version of
|
---|
272 | the Qt library. This may be changed by passing command line options to
|
---|
273 | configure.cmd at step 3.
|
---|
274 |
|
---|
275 | To perform a normal build, you execute 'configure.cmd' followed by 'make' right
|
---|
276 | in the directory containing the Qt4 source tree. The default in this case is to
|
---|
277 | build both the debug and release versions of the Qt library.
|
---|
278 |
|
---|
279 | Please keep in mind that in case of the dual debug and release build (where both
|
---|
280 | flavors are stored in the same build directory), only DLL and LIB files will be
|
---|
281 | separated (because the debug versions of them will have the 'd' suffix in the
|
---|
282 | file name). Executable files are normally taken from the release build but,
|
---|
283 | since the file names are identical, sometimes they may be overwritten by the
|
---|
284 | debug versions (e.g. when you rebuild parts of the library later). For this
|
---|
285 | reason, performing dual builds is not recommended.
|
---|
286 |
|
---|
287 | The Qt library is huge so the build process will take several hours (or even
|
---|
288 | several dozen of hours) depending on your hardware and configure options.
|
---|
289 |
|
---|
290 | Once the library is successfully built, you may try to compile the demos and
|
---|
291 | examples by visiting the individual example subdirectories in the source tree
|
---|
292 | and typing 'qmake' followed by 'make'.
|
---|
293 |
|
---|
294 | NOTE:
|
---|
295 |
|
---|
296 | This version of Qt for OS/2 includes the Extended system tray plugin for
|
---|
297 | XCenter/eCenter which is necessary to enable Qt support for the special
|
---|
298 | notification area on the XCenter/eCenter panel (called the "system tray")
|
---|
299 | which is used by many long-running applications to display their status.
|
---|
300 | In order to activate this support, you need to install this plugin to your
|
---|
301 | XCenter or eCenter. The plugin is built during the normal Qt build process
|
---|
302 | and can be found in the file \plugins\xcenter\xsystray.dll in the Qt source
|
---|
303 | tree. In order to install the plugin, do the following:
|
---|
304 |
|
---|
305 | a. Copy xsystray.dll to <XWorkplace installation folder>\plugins\xcenter\
|
---|
306 | (on eComStation, this will be C:\ecs\system\ewps\plugins\xcenter\ where
|
---|
307 | C: is your boot drive).
|
---|
308 |
|
---|
309 | b. Restart WPS.
|
---|
310 |
|
---|
311 | c. Add the "Extended system tray" widget to the XCenter/eCenter panel using
|
---|
312 | the XCenter context menu ('Create new widget').
|
---|
313 |
|
---|
314 | Note that if you upgrade from the previous version of the plugin then
|
---|
315 | please unlock xsystray.dll in the target folder using the UNLOCK.EXE
|
---|
316 | utility (which you can find in the LxLite package, for example) before
|
---|
317 | performing step a., otherwise the copy operation will fail.
|
---|
318 |
|
---|
319 | IMPORTANT NOTE:
|
---|
320 |
|
---|
321 | Please take into account that the Qt library you build on your own as
|
---|
322 | described above is NOT intended for wide distribution with Qt applications
|
---|
323 | you port or create. Such private Qt builds help you develop Qt applications
|
---|
324 | (because you can easily debug your program and parts of the Qt framework at
|
---|
325 | the source level) but being widely distributed they will create a so-called
|
---|
326 | DLL hell when a program running on a user computer crashes because it picks
|
---|
327 | up a wrong build of the Qt library. This will happen because even a single
|
---|
328 | change to Qt configuration options may make your build binary incompatible
|
---|
329 | with another build. And even if you convince the user to isolate different
|
---|
330 | DLLs (using LIBPATHSTRICT and BEGINLIBPATH) it will create another major
|
---|
331 | problem: two different Qt applications will load two different copies of Qt
|
---|
332 | into memory which will create an unnecessary overhead by doubling the
|
---|
333 | amount of used system resources.
|
---|
334 |
|
---|
335 | In order to nicely solve this problem, netlabs.org provides the official
|
---|
336 | binary builds of the Qt library distributed as WPI archives which are
|
---|
337 | described in the next section.
|
---|
338 |
|
---|
339 |
|
---|
340 |
|
---|
341 | USING OFFICIAL BINARY QT ARCHIVES
|
---|
342 |
|
---|
343 | For your convenience, netlabs.org provides the following binary distributions
|
---|
344 | of the Qt library (where X_Y_Z is the Qt version number) distributed as WPI
|
---|
345 | archives:
|
---|
346 |
|
---|
347 | qt-lib-X_Y_Z.wpi - Runtime DLLs and binaries ("lib" archive)
|
---|
348 | qt-dev-X_Y_Z.wpi - Development libraries, tools and headers ("dev" archive)
|
---|
349 |
|
---|
350 | These archives are called the official binary archives of the Qt library for
|
---|
351 | OS/2. An official binary archive contains the most complete Qt build that
|
---|
352 | enables all features of the Qt library and includes all standard Qt plugins
|
---|
353 | implemented for the OS/2 platform at the time of the release.
|
---|
354 |
|
---|
355 | The "lib" archive contains the release versions of DLLs (and may contain a few
|
---|
356 | helper binaries) necessary to run applications created using the Qt framework.
|
---|
357 | This package is usually installed by end users together with Qt applications
|
---|
358 | they want to use.
|
---|
359 |
|
---|
360 | The "dev" archive contains pre-built release versions of import libraries and
|
---|
361 | a complete set of C++ include headers of the Qt framework. This package is used
|
---|
362 | by developers and porters of Qt applications to build release versions of the
|
---|
363 | applications that are binary compatibie with the Qt runtime provided by the
|
---|
364 | official "lib" archive described above. Using the "dev" package requires the
|
---|
365 | same environment as described in section "SETTING UP THE ENVIRONMET" above.
|
---|
366 |
|
---|
367 | Please note again that the "dev" archive is intended to make a final release
|
---|
368 | build of the Qt application which you do when you decide to ship a new version
|
---|
369 | to the end users -- makes sure that the deployed application will share the same
|
---|
370 | Qt runtime with other Qt applications. However, for daily work it is highly
|
---|
371 | recommended that you build the debug version of the Qt library yourself (using
|
---|
372 | the full source code ZIP archive or directly from SVN) as described in section
|
---|
373 | "COMPILING QT").
|
---|
374 |
|
---|
375 | Besides the "lib" and the "dev" archives, the following official archives exist
|
---|
376 | that you may also find useful:
|
---|
377 |
|
---|
378 | qt-examples-X_Y_Z.wpi - Demo and example sources ("examples")
|
---|
379 |
|
---|
380 | The "examples" archive contains the source code and compiled binaries of the
|
---|
381 | demo and example applications shipped with Qt. They serve as a good
|
---|
382 | demonstration of the Qt library features and it is recommended to look at them.
|
---|
383 | The binaries are compiled using the official "lib" archive. Please note that
|
---|
384 | some demos and examples may miss from the arcvhice since not all features have
|
---|
385 | been implemented in the OS/2 version of Qt yet.
|
---|
386 |
|
---|
387 | NOTE:
|
---|
388 |
|
---|
389 | All .DLL and .EXE files of the official binary build contain a DESCRIPTION
|
---|
390 | string with the vendor field set to "netlabs.org" (by contrast, all custom
|
---|
391 | Qt builds will set the vendor field to what the USER environment variable
|
---|
392 | contains or to "anonymous" if USER is not set). Please note that you must
|
---|
393 | NOT set vendor to "netlabs.org" when creating your own builds of the Qt
|
---|
394 | library because it will make it difficult to identify various distributions
|
---|
395 | and track possible problems with the builds.
|
---|
396 |
|
---|
397 |
|
---|
398 |
|
---|
399 | QMAKE CONFIG OPTIONS
|
---|
400 |
|
---|
401 | The following CONFIG options of the qmake tool have a special meaning in OS/2:
|
---|
402 |
|
---|
403 | windows Turns on generation of PM (WINDOWAPI) executables. By
|
---|
404 | default, this option is set for release builds that link
|
---|
405 | to the Qt GUI library.
|
---|
406 |
|
---|
407 | console Turns on generation of text mode (WINDOWCOMPAT) executables.
|
---|
408 | By default, this option is set when setting the "windows"
|
---|
409 | option is not appropriate (see above).
|
---|
410 |
|
---|
411 | In addition, qmake recognizes the following OS/2-specific CONFIG options:
|
---|
412 |
|
---|
413 | map Turns on generation of the .map files for executables and
|
---|
414 | DLLs. Note that this option is not set by default.
|
---|
415 |
|
---|
416 | sym Turns on generation of the .sym files for executables and
|
---|
417 | DLLs. The option is turned on by default if configure.cmd
|
---|
418 | is able to find the MAPSYM tool in PATH.
|
---|
419 |
|
---|
420 | exepack Turns on compression for executables and DLLs. The option is
|
---|
421 | turned on by default for release builds if configure.cmd
|
---|
422 | is able to find a compression tool (LxLite) in PATH.
|
---|
423 |
|
---|
424 | highmem Turns on high memory usage for dynamically allocated memory
|
---|
425 | in DLLs and executables. When this option is set, a special
|
---|
426 | compiler flag (-Zhigh-mem for GCC) is used to enable high
|
---|
427 | memory support in the C library (LIBC). This option is set
|
---|
428 | by default so that all Qt DLLs and Qt applications built
|
---|
429 | with qmake are enabled for high memory. Note that high
|
---|
430 | memory support must be enabled for all LIBC-based DLLs
|
---|
431 | linked to the executable as well as for the executable
|
---|
432 | itself: high memory usage will be disabled if one of them
|
---|
433 | votes against it.
|
---|
434 |
|
---|
435 | export_all Cause the linker to export all public symbols in a generated
|
---|
436 | DLL. By default (when this option is absent), only the
|
---|
437 | symbols marked with the __declspec(dllexport) compiler
|
---|
438 | directive in the source files.
|
---|
439 |
|
---|
440 |
|
---|
441 |
|
---|
442 | PRINTING SUPPORT
|
---|
443 |
|
---|
444 | Starting with version 4.6.2, Qt for OS/2 supports printing through the CUPS
|
---|
445 | framework (provided that this support is enabled when building Qt, see the
|
---|
446 | respective sections in the beginning of this document). The OS/2 implementation
|
---|
447 | of the CUPS framework is provided by the eCUPS package available at
|
---|
448 | http://svn.netlabs.org/ecups/.
|
---|
449 |
|
---|
450 | The Qt Runtime detects the presence of eCUPS in the system on the fly and talks
|
---|
451 | to the CUPS daemon directly, bypassing the standard OS/2 printing subsystem.
|
---|
452 | This means that in order to print from Qt applications, you don't need to create
|
---|
453 | and configure printer objects using the standard OS/2 system printer setup
|
---|
454 | procedure -- you only need to install eCUPS and configure your printers in
|
---|
455 | there. Please refer to the eCUPS user manual to obtain the detailed instructions
|
---|
456 | on how to configure CUPS printers.
|
---|
457 |
|
---|
458 |
|
---|
459 |
|
---|
460 | FILE WATCHING FUNCTION
|
---|
461 |
|
---|
462 | Qt supports a mechanism of notifying Qt applications about changes to the file
|
---|
463 | system, such as creating files or directories, changing their attributes or
|
---|
464 | deleting them, even if these changes are performed outside Qt applications. In
|
---|
465 | particular, this is used in standard Qt open file dialogs where you can
|
---|
466 | instantly observe changes made to the directory contents by third-party
|
---|
467 | applications running in the background.
|
---|
468 |
|
---|
469 | In order to support this functionality on OS/2, Qt relies on the file watching
|
---|
470 | mechanism provided by the Presentation Manager. This mechanism is a global
|
---|
471 | system resource so that only one process may use it at a time. In a standard
|
---|
472 | installation of OS/2 or eComStation this resource is exclusively used by the
|
---|
473 | Workplace Shell and is not available to other applications. In order to overcome
|
---|
474 | this limitation, a respective function was included to xWorkplace, the famous
|
---|
475 | WPS extension (which lives inside the WPS process), starting with version 1.0.8.
|
---|
476 | This function allows any number of other processes to receive notifications
|
---|
477 | about file system changes and it gets utilized by Qt as well.
|
---|
478 |
|
---|
479 | If an earlier version of xWorkplace is installed on the user system, or if no
|
---|
480 | xWorkplace extension is present at all, Qt uses its own method of detecting
|
---|
481 | file system changes which is based on polling the directory contents in regular
|
---|
482 | intervals. While this method works well for a small number of watched
|
---|
483 | directories with just few files in them, it may significantly slow down the
|
---|
484 | system if you work with a directory containing thousands of files.
|
---|
485 |
|
---|
486 | Therefore, is strongly recommended to install or upgrade to xWorkplace version
|
---|
487 | 1.0.8 or above to make sure that you will not suffer from the described problem.
|
---|
488 | You will also need to make sure that the "Enable folder auto-refresh" check box
|
---|
489 | located on the "Folder Views" page in the Workplace Shell settings notebook is
|
---|
490 | turned on in order to enable the notification mechanism (note that you may need
|
---|
491 | to reboot after changing its state).
|
---|
492 |
|
---|
493 |
|
---|
494 |
|
---|
495 | ENVIRONMENT VARIABLES
|
---|
496 |
|
---|
497 | The Qt library recognizes a number of OS/2-specific environment variables that
|
---|
498 | affect its functionality at runtime. The table below lists these variables and
|
---|
499 | their meaning:
|
---|
500 |
|
---|
501 | QT_PM_NO_DIVE If set, Qt will not use DIVE (direct interface video
|
---|
502 | extensions) for painting widgets even if DIVE (which
|
---|
503 | provides a much faster painting speed than the
|
---|
504 | regular GPI approach) is available. Currently, this
|
---|
505 | is the default setting if the Panorama video driver
|
---|
506 | is detected because its DIVE implementation contains
|
---|
507 | a number of bugs.
|
---|
508 |
|
---|
509 | QT_PM_DIVE=<mode> Enables using DIVE for painting widgets. <mode> is
|
---|
510 | one of:
|
---|
511 |
|
---|
512 | - FB (direct framebuffer access, which is the
|
---|
513 | fastest mode but causes the curruption of the
|
---|
514 | screen under the software mouse pointer due to
|
---|
515 | the limitation of DIVE). If this mode is not
|
---|
516 | available, BLIT will be used (see below).
|
---|
517 |
|
---|
518 | - FBSWM (the same FB but hides the mouse pointer
|
---|
519 | before painting which introduces mouse flicker
|
---|
520 | and may be a bit slower than the raw FB).
|
---|
521 |
|
---|
522 | - BLIT (slower than both FB and FBSWM but prevents
|
---|
523 | screen corruption under the mouse pointer and
|
---|
524 | does not produce the mouse pointer flicker
|
---|
525 | effect).
|
---|
526 |
|
---|
527 | This variable is ignored if QT_PM_NO_DIVE is set. If
|
---|
528 | neither this nor the QT_PM_NO_DIVE variable is set,
|
---|
529 | the FBSWM mode is used by default (unless the
|
---|
530 | current video driver is Panorama, see above).
|
---|
531 |
|
---|
532 | QT_PM_NO_SOUND_SHARE If set, Qt will open the audio device in exclusive
|
---|
533 | only one sound may be played on the computer at a
|
---|
534 | time. This mode is necessary for some sound cards
|
---|
535 | when using the Uniaud audio driver as it is known to
|
---|
536 | have problems with simultaneous playback.
|
---|
537 | Qt builds,
|
---|
538 |
|
---|
539 | QT_PM_SOUND_SHARE The opposite to the above. If set, Qt will open the
|
---|
540 | audio device in shared mode. This is the default
|
---|
541 | behavior if neither this nor the
|
---|
542 | QT_PM_NO_SOUND_SHARE variable is set. This variable
|
---|
543 | is ignored if QT_PM_NO_SOUND_SHARE is set.
|
---|
544 |
|
---|
545 | QT_PM_NO_REGISTRY If set, Qt will not use the Open32 registry to store
|
---|
546 | application settings with QSettings. Instead, plain
|
---|
547 | text INI files will be used for both NativeFormat
|
---|
548 | and IniFormat. Due to a number of problems in the
|
---|
549 | Open32 registry implementation (that may easily lead
|
---|
550 | to registry corruption), this is the default
|
---|
551 | behavior if neither this nor the QT_PM_REGISTRY
|
---|
552 | variable is set.
|
---|
553 |
|
---|
554 | QT_PM_REGISTRY The opposite to the above. If set, Qt will use the
|
---|
555 | Open32 registry to store application settings. This
|
---|
556 | variable is ignored if QT_PM_NO_REGISTRY is set.
|
---|
557 |
|
---|
558 | QT_PM_NO_SYSTEM_LOCALE If set, Qt will ignore the regional settings from
|
---|
559 | the system locale object found in the Country
|
---|
560 | Palette located in the System Setup folder and will
|
---|
561 | take them from the internal Qt locale database
|
---|
562 | according to the current country and language
|
---|
563 | settings. Due to the fact that this internal Qt
|
---|
564 | database usually has a better representation of the
|
---|
565 | regional settings, this is the default behavior if
|
---|
566 | neither this nor the QT_PM_SYSTEM_LOCALE variable is
|
---|
567 | set.
|
---|
568 |
|
---|
569 | QT_PM_SYSTEM_LOCALE The opposite to the above. If set, Qt will use the
|
---|
570 | regional settings as found in the default locale
|
---|
571 | object set the Country Palette. This variable is
|
---|
572 | ignored if QT_PM_NO_SYSTEM_LOCALE is set.
|
---|
573 |
|
---|
574 | LANG This variable can be used to override the default
|
---|
575 | country and language used in the Qt application both
|
---|
576 | for regional settings and for translations. The
|
---|
577 | format of the value is "ll_CC" where <ll> is the
|
---|
578 | two-letter ISO language code and <CC> is the two-
|
---|
579 | letter ISO country code. Note that if this variable
|
---|
580 | is not set, Qt will derive the language and country
|
---|
581 | from the system country code specified in the
|
---|
582 | COUNTRY statement of CONFIG.SYS.
|
---|
583 |
|
---|
584 |
|
---|
585 |
|
---|
586 | COMMAND LINE OPTIONS
|
---|
587 |
|
---|
588 | Any Qt executable recognizes a number of command line options that may change
|
---|
589 | the behavior of the Qt application. Here are the most interesting ones:
|
---|
590 |
|
---|
591 | -style <name> Changes the default Qt widget style (theme) to a
|
---|
592 | style with the given name. The buiil-in styles which
|
---|
593 | are always available in the official build include:
|
---|
594 | "windows" (currently, the default on OS/2), "motif",
|
---|
595 | "cde", "plastique" and "cleanlooks". Other styles
|
---|
596 | may be also provided by the style plugins.
|
---|
597 |
|
---|
598 | -graphicssystem <name> Changes the graphics system used to paint widgets.
|
---|
599 | On OS/2, only two values are supported: "native"
|
---|
600 | (the default one) and "raster". The "native" system
|
---|
601 | uses DIVE (direct interface video extensions) when
|
---|
602 | it is available. If DIVE is not available or if it
|
---|
603 | is disabled (see the QT_PM_NO_DIVE environment
|
---|
604 | variable description for details), the "raster"
|
---|
605 | system will be automatically selected as a fallback.
|
---|
606 |
|
---|
607 |
|
---|
608 |
|
---|
609 | CURRENT LIMITATIONS
|
---|
610 |
|
---|
611 | 1. configure.cmd is does not build demos and examples by default (to save
|
---|
612 | time). They may be built by hand, as described above.
|
---|
613 |
|
---|
614 | 2. configure.cmd does not understand all command line options understood by
|
---|
615 | configure scripts on other platforms. If you want to customize your build
|
---|
616 | of the Qt library (which is normally not recommended and not supported),
|
---|
617 | you may try to modify configure.cmd itself.
|
---|
618 |
|
---|
619 | 3. OS/2 bitmap fonts are not supported. Use TTF or Type1 (PFB) fonts with Qt.
|
---|
620 |
|
---|
621 | 4. No native PM style, but Qt will use fonts and colors from the current
|
---|
622 | OS/2 theme. Hint: if your default OS/2 font is "WarpSans", install the
|
---|
623 | "Workplace Sans" TTF font from Alex Taylor to get more native look & feel.
|
---|
624 | It is recommended to install version 0.7 of the Normal face and version 0.3
|
---|
625 | of the Bold face which you can find here:
|
---|
626 |
|
---|
627 | http://users.socis.ca/~ataylo00/creative/fonts/workplace/
|
---|
628 |
|
---|
629 | 5. QProcess: when starting PM applications from text-mode applications, the
|
---|
630 | returned PID is a PID of the intermediate cmd.exe process, not the target
|
---|
631 | application.
|
---|
632 |
|
---|
633 | 6. The following classes are not available due to their rare usage or low
|
---|
634 | importance on the OS/2 platform: QSharedMemory, QSystemSemaphore,
|
---|
635 | QInputContext. On the source level, a number of macros is defined to
|
---|
636 | reflect this, respectively: QT_NO_SYSTEMSEMAPHORE, QT_NO_SHAREDMEMORY,
|
---|
637 | QT_NO_IM. Normally, Qt applications use these macros in the form of
|
---|
638 | "#fndef QT_NO_SOMEFEATURE" to isolate the relevant parts of the code that
|
---|
639 | uses these classes so that the application still builds when the
|
---|
640 | corresponding feature is missing.
|
---|
641 |
|
---|
642 | 7. No qt3support module. This functionality is rarely necessary in mature
|
---|
643 | real life Qt applications and has low priority. In the code, it is
|
---|
644 | reflected by the absense of the QT3_SUPPORT macro.
|
---|
645 |
|
---|
646 | 8. The following features are missing (either because of the lack of the
|
---|
647 | required support from the system side or because of the rare usage):
|
---|
648 |
|
---|
649 | - IPV6 support in the network module (QT_NO_IPV6 is defined).
|
---|
650 | - phonon module (QT_NO_PHONON is defined).
|
---|
651 | - multimedia module (QT_NO_MULTIMEDIA is defined).
|
---|
652 | - OpenGL module (QT_NO_OPENGL is defined).
|
---|
653 | - declarative module (QT_NO_DECLARATIVE is defined).
|
---|
654 | - tablet support (QT_NO_TABLET is defined).
|
---|
655 |
|
---|
656 | See the project roadmap for more information on the current progress and
|
---|
657 | future plans:
|
---|
658 |
|
---|
659 | http://svn.netlabs.org/qt4/roadmap
|
---|
660 |
|
---|
661 | Feel free to request new features and report bugs using the project bug
|
---|
662 | tracker abaialble at:
|
---|
663 |
|
---|
664 | http://svn.netlabs.org/qt4/report
|
---|
665 |
|
---|
666 |
|
---|
667 |
|
---|
668 | CREDITS
|
---|
669 |
|
---|
670 | Dmitry A. Kuminov (development)
|
---|
671 | Silvan Scherrer (management)
|
---|
672 |
|
---|
673 | netlabs.org (hosting & support)
|
---|
674 |
|
---|
675 | Nokia Corporation (original Qt library)
|
---|
676 |
|
---|
677 | We also want to THANK all individuals and organizations who made the donations
|
---|
678 | to this project and helped to make it happen. Please visit
|
---|
679 |
|
---|
680 | http://qt.netlabs.org/en/site/index.xml
|
---|
681 |
|
---|
682 | to get the full list of sponsors and to find information on how you can support
|
---|
683 | the project.
|
---|
684 |
|
---|
685 |
|
---|
686 | Qt is a trademark of Nokia Corporation and/or its subsidiary(-ies).
|
---|
687 | OS/2 and OS/2 Warp are trademarks of the IBM Corporation and/or its subsidiary(-ies).
|
---|
688 | eComStation is a trademark of Serenity Systems International and/or its subsidiary(-ies).
|
---|
689 | Etc.
|
---|