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