source: trunk/os2-doc/doc.html@ 89

Last change on this file since 89 was 89, checked in by dmik, 19 years ago

The VERSION project variable is now copied by qmake (as is) to the generated makefile.

  • Property svn:mime-type set to text/html
File size: 13.7 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<?xml-stylesheet type="text/css"
3href="file:qtos2-xxe.css"
4?>
5<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
6"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
7<html>
8 <head>
9 <link href="qtos2-www.css" rel="stylesheet" type="text/css" />
10
11 <title>Qt Toolkit Version 3 for OS/2</title>
12 </head>
13
14 <body id="doc">
15 <h1><a name="top">Documentation</a></h1>
16
17 <h2><a name="QtReference">Qt Reference Documentation</a></h2>
18
19 <p>Currently, the Qt Reference Documentation is not shipped with the OS/2
20 version of the Qt Toolkit (it will be done later).</p>
21
22 <p>You can view it online using this link: <a
23 href="http://doc.trolltech.com/3.3/index.html">http://doc.trolltech.com/3.3/index.html</a>.</p>
24
25 <h2><a name="Bugs">Known Bugs and Limitations</a></h2>
26
27 <p>The OS/2 version of the Qt Library is not yet complete. Some features
28 are still under development and there are some known bugs. They are
29 briefly described below.</p>
30
31 <h4>Missing features</h4>
32
33 <table border="1">
34 <col width="0*" />
35
36 <col width="100%" />
37
38 <tr>
39 <td>1</td>
40
41 <td>Drag &amp; Drop (<code>QT_NO_DRAGANDDROP</code> is constantly
42 defined for now)</td>
43 </tr>
44
45 <tr>
46 <td>2</td>
47
48 <td>OS/2 widget style (a native look and feel of buttons, combo boxes
49 and other common widgets)</td>
50 </tr>
51
52 <tr>
53 <td>3</td>
54
55 <td>Printing support (<code>QPrinter</code> class is absent,
56 <code>QT_NO_PRINTER</code> is constantly defined for now)</td>
57 </tr>
58
59 <tr>
60 <td>4</td>
61
62 <td>Process management (<code>QProcess </code>class is absent)</td>
63 </tr>
64
65 <tr>
66 <td>5</td>
67
68 <td>Audio support (<code>QSound</code> class)</td>
69 </tr>
70
71 <tr>
72 <td>6</td>
73
74 <td><kbd>sql</kbd> module (<code>QSql</code> class and friends)</td>
75 </tr>
76
77 <tr>
78 <td>7</td>
79
80 <td><kbd>table</kbd> module (<code>QTable</code> class, depends only
81 on Drag &amp; Drop)</td>
82 </tr>
83
84 <tr>
85 <td>8</td>
86
87 <td><kbd>iconview</kbd> module (<code>QIconView</code> class, depends
88 only on Drag &amp; Drop)</td>
89 </tr>
90
91 <tr>
92 <td>9</td>
93
94 <td><kbd>canvas</kbd> module (<code>QCanvas</code> and friends)</td>
95 </tr>
96
97 <tr>
98 <td>10</td>
99
100 <td><kbd>OpenGL</kbd> module (<code>QGL</code> class and friends)</td>
101 </tr>
102
103 <tr>
104 <td>11</td>
105
106 <td>Plugin support</td>
107 </tr>
108
109 <tr>
110 <td>12</td>
111
112 <td>Qt Designer tool (depends only on Drag &amp; Drop)</td>
113 </tr>
114
115 <tr>
116 <td>13</td>
117
118 <td>Qt Linguist tool (depends only on Drag &amp; Drop)</td>
119 </tr>
120
121 <tr>
122 <td>14</td>
123
124 <td>Qt Assistant tool (depends only on Drag &amp; Drop)</td>
125 </tr>
126 </table>
127
128 <h4>Know Bugs and Limitations</h4>
129
130 <table border="1">
131 <col width="0*" />
132
133 <col width="100%" />
134
135 <tr>
136 <td>1</td>
137
138 <td>Unicode is not fully supported in GUI, to the effect that only the
139 symbols from the current (system) 8-bit charset can appear in widgets
140 and when drawing text.</td>
141 </tr>
142
143 <tr>
144 <td>2</td>
145
146 <td>Alpha blending for pixmaps is not yet implemented
147 [<code>themes</code> example].</td>
148 </tr>
149
150 <tr>
151 <td>3</td>
152
153 <td>Complex text transformations (rotation etc.) don't work correctly
154 with the FreeType2 rendering engine. Most likely a bug or a limitation
155 of FreeType2 [<code>xform</code> example].</td>
156 </tr>
157
158 <tr>
159 <td>4</td>
160
161 <td>Text rotation to values greater than 90 degrees clockwise doesn't
162 work with truetype fonts and the standard TTF rendering engine. This
163 seems like an OS/2 bug [<code>xform</code> example].</td>
164 </tr>
165
166 <tr>
167 <td>5</td>
168
169 <td>Stay-on-top is not supported system-wide.</td>
170 </tr>
171 </table>
172
173 <h2><a name="GNUMAKE">GNUMAKE backend for qmake</a></h2>
174
175 <p>The GNUMAKE backend generates makefiles for the GNU Make utility from
176 <kbd>qmake</kbd>'s project files. A separate generator became necessary
177 because the previously used MINGW generator has some problems and
178 limitations that make it impossible to generate correct makefiles in
179 several situations. This new generator is primarily intended to be used
180 with GNU Make under OS/2, but theoretically can be used on any platform
181 after some modifications. However, its usage under other platforms is not
182 tested and not supported.</p>
183
184 <p>The GNUMAKE backend was initially based on the existing MINGW backend,
185 so here is the list of its differences and improvements comparing to the
186 MINGW backend:</p>
187
188 <p>1. <code>QMAKE_LINK_OBJECT_MAX</code>,
189 <code>QMAKE_LINK_OBJECT_SCRIPT</code>,
190 <code>QMAKE_LINK_OBJMOC_SCRIPT</code> are no longer supported, since the
191 OS/2 version of GNU <kbd>LD</kbd> (linker) seems not to support object
192 link scripts. The OS/2 CMD.EXE command line length limitation (1024 chars)
193 is worked around in a different way (see the
194 <kbd>\mkspecs\os2-g++\qmake.conf</kbd> if interested).</p>
195
196 <p>2. Added new qmake varibales <code>QMAKE_RUN_LINK</code> and
197 <code>QMAKE_RUN_LIB</code> (intended to be used in qmake.conf) to
198 explicitly specify the command to execute the linker and the librarian,
199 respectively. These variables are optional and have the following
200 defaults:</p>
201
202 <pre>$(LINK) $(LFLAGS) -o $(TARGET) $(DEF_FILE) $(OBJECTS) $(OBJMOC) $(LIBS)
203$(LIB) $(TARGET) $(OBJECTS) $(OBJMOC)</pre>
204
205 <p>3. <code>QMAKE_EXTRA_WIN_COMPILERS</code> and
206 <code>QMAKE_EXTRA_WIN_TARGETS</code> are renamed to
207 <code>QMAKE_EXTRA_COMPILERS</code> and <code>QMAKE_EXTRA_TARGETS</code>
208 respectively, for clarity.</p>
209
210 <p>4. Leaving <code>QMAKE_LIBS_QT_ENTRY</code> empty does not produce a
211 qmake warning any more.</p>
212
213 <p>5. Added the new qmake variable <code>QMAKE_RUN_IMPLIB</code> used to
214 produce the import library when the target is the dynamic link library. It
215 is expected that this variable specifies the output import library name
216 with the <code>$(TARGET_IMPLIB)</code> macro, which is defined by qmake as
217 the project's target dll full basename with the <kbd>.lib</kbd>
218 extension.</p>
219
220 <p>6. Added new qmake variables <code>QMAKE_RUN_GENDEF</code> and
221 <code>QMAKE_GENDEF_DEPS</code>. They are intended to generate a
222 <kbd>.def</kbd> file containing a list of DLL exports when the target is
223 the dynamic link library (i.e. when <code>TEMPLATE&nbsp;= lib</code> and
224 <code>CONFIG</code> contains <code>dll</code>) and the
225 <code>DEF_FILE</code> variable is empty or not specified in the project
226 file. In this case, the <code>DEF_FILE</code> macro is defined by qmake as
227 the project's target full basename with the .def extension.
228 <code>QMAKE_RUN_GENDEF</code> is the command to generate this
229 <code>DEF_FILE</code> (its output must go to <code>$(DEF_FILE)</code>).
230 <code>QMAKE_GENDEF_DEPS</code> is the list of dependencies for the
231 <code>DEF_FILE</code>.</p>
232
233 <p>7. Empty <code>OBJECTS_DIR</code> and <code>MOC_DIR</code> qmake
234 variables do not cause GNU Make to print warnings any more.</p>
235
236 <p>8. Fixed the <kbd>dist</kbd> makefile target: the generated zip didn't
237 have the name (only extension).</p>
238
239 <p>9. Commands for custom (user defined) targets and for extra compilers
240 (i.e. values of <code>&lt;my_target&gt;.commands</code> variables) are now
241 splitted at '<kbd>&nbsp;;;&nbsp;</kbd>' sequences (a double semicolon
242 surrounded by single spaces) and placed to separate lines in the makefile.
243 For example, the definition
244 '<code>&lt;my_target&gt;.command&nbsp;=&nbsp;c1&nbsp;;;&nbsp;c2</code>'
245 will apperar as follows:</p>
246
247 <pre>&lt;my_target&gt;: &lt;my_target_deps&gt;
248 c1
249 c2</pre>
250
251 <p>10. Added new qmake variables <code>QMAKE_QUIET_CLEAN</code> and
252 <code>QMAKE_IF_FILE_EXISTS</code>. <code>QMAKE_QUIET_CLEAN</code> is
253 similar <code>QMAKE_CLEAN</code>, but adds
254 <code>$(QMAKE_IF_FILE_EXISTS)</code> to the beginning of each
255 <code>$(DEL_FILE)</code> statement to delete a file only if it exists (to
256 avoid system warnings).</p>
257
258 <p>11. Object files are no more forced to have the <kbd>.o</kbd>
259 extension. The standard qmake <code>QMAKE_EXT_OBJ</code> variable is used
260 instead (by default, on OS/2 it equals to <kbd>.obj</kbd>).
261 <code>QMAKE_EXT_CPP</code> variable is regarded as well.</p>
262
263 <p>12. Library files now have the <kbd>.lib</kbd> extension (instead of
264 <kbd>.a</kbd>), and the <kbd>lib...</kbd> prefix is no more prepended.</p>
265
266 <p>13. Added new <code>QMAKE_CFLAGS_INCDIR</code>,
267 <code>QMAKE_LFLAGS_LIBDIR</code>, <code>QMAKE_LFLAGS_LIB</code> qmake
268 variables to make it possible to customize the coorresponding flags (i.e.,
269 <kbd>-I</kbd>, <kbd>-L</kbd> and <kbd>-l</kbd>, as for GCC) in the
270 <kbd>.conf</kbd> file.</p>
271
272 <p>14. Added new <code>QMAKE_LIBS_QT_DLL</code> and
273 <code>QMAKE_LIBS_QT_THREAD_DLL</code> qmake variables to specify the list
274 of libraries required when the application is linked against the DLL
275 version of Qt, separately from the list of libraries required for linking
276 against the static Qt library.</p>
277
278 <p>15. The <code>QMAKESPECDIR</code> variable is defined in the generated
279 makefile and points to the directory where a <kbd>qmake.conf</kbd> file
280 being used was read from.</p>
281
282 <p>16. Added new qmake variables <code>DEF_FILE_TEMPLATE</code> and
283 <code>DEF_FILE_MAP</code>. When the target is the dynamic link library and
284 <code>DEF_FILE</code> is <b>not</b> defined in the project file, these
285 variables (when defined) go to the generated makefile w/o any changes.
286 They are also appended (as GNU make variables) to the contents of the
287 <code>QMAKE_GENDEF_DEPS</code> variable (see 6).
288 <code>DEF_FILE_TEMPLATE</code> is intended to point to an existing
289 template for a <kbd>.def</kbd> file. <code>DEF_FILE_MAP</code> should
290 point to an existing file used to store ordinals assigned to exported
291 symbols (to make assignments persistent from build to build). The backend
292 itself doesn't use these variables, they are used only to pass the
293 information from the project file to the generated makefile. It is the
294 responsibility of the <kbd>.conf</kbd> file to implement the described
295 functionality.</p>
296
297 <p>17. Objects defining custom targets got the <code>.extradeps</code>
298 attribute. This attrubute allows to specify additional target dependencies
299 that are not followed by commands. That is, if you have the following
300 extra target definition:</p>
301
302 <pre>my_target.target = somefile
303my_target.depends = anotherfile
304my_target.extradeps = export SOMETHING = something
305my_target.commands = coolcmd &gt; $$my_target.target</pre>
306
307 <p>you'll get in the generated makefile:</p>
308
309 <pre>somefile : export SOMETHING = something
310somefile : anotherfile
311 coolcmd &gt; somefile</pre>
312
313 <p>Note that if you two or more additional dependencies each placed on a
314 separate line, you can separate them using '<kbd>&nbsp;;;&nbsp;</kbd>' (a
315 double semicolon surrounded by single spaces) in the definition of the
316 <code>.extradeps</code> attribute.</p>
317
318 <p>18. Besides the standard <code>INCPATH</code> make variable that
319 defines a list of include directories for the C/C++ compiler (separated by
320 spaces and usually prepended with a compiler switch), all generated
321 makefiles contain the <code>INCLUDEPATH</code> make variable that defines
322 the same list of directories but separated by semicolons (and therefore
323 suitable for assigning to <kbd>PATH</kbd>-like environment variables).</p>
324
325 <p>19. Added internal qmake variables <code>QMAKE_RUN_RC_RES</code> and
326 <code>QMAKE_RUN_RC_EXE</code> necessary to implement the support for
327 <code>RC_FILE</code> and <code>RES_FILE</code> project variables.
328 <code>QMAKE_RUN_RC_RES</code> defines a command line to generate a project
329 <kbd>.res</kbd> file from an <kbd>.rc</kbd> file specified in
330 <code>RC_FILE</code>. It should use <code>$(RC_FILE)</code> as a source
331 and <code>$(RES_FILE)</code> as a target of the operation. This command is
332 used only when the <code>RC_FILE</code> project variable is not empty.
333 <code>QMAKE_RUN_RC_EXE</code> defines a command line to bind a
334 <kbd>.res</kbd> file to the project executable. It should use
335 <code>$(RES_FILE)</code> to specify the <kbd>.res</kbd> file to bind and
336 <code>$(TARGET)</code> to specify the executable file name.</p>
337
338 <p>20. Added the internal qmake variable
339 <code>QMAKE_LIBDIR_QT_DEBUG</code>. It defines where to place the Qt
340 library when the debug version is being built, and also where to search
341 for it when the project file of an application contains <kbd>qt</kbd> and
342 <kbd>debug</kbd> keywords in the <code>CONFIG</code> statement.</p>
343
344 <p>21. The <code>VERSION</code> project variable is copied by qmake (as
345 is) to the generated makefile. Note that its value does not affect the
346 name of the generated DLL target anymore (for projects with the
347 <kbd>lib</kbd> template and with the <kbd>dll</kbd> keyword in
348 <code>CONFIG</code>), as opposed to other qmake backends. Appending a
349 version number to the DLL name could implicitly lead to running out of the
350 8x3 naming limit that is still present in OS/2 for DLLs loaded by module
351 name (the most common case). Instead, the <code>VERSION</code> macro can
352 be used by qmake compiler specifications to embed the version to the
353 generated DLL file itself (as the GCC specification does).</p>
354 </body>
355</html>
Note: See TracBrowser for help on using the repository browser.