# The meaning of some macros

This table contains descriptions of some (mostly internal) macros which are not described anywhere (or not enough described) in the original Qt docs. It does not pretend to be a complete list of all Qt macros -- only those that are considered to be interesting or important are mentioned here.

Macro | Meaning | Scope | Notes
--- | --- | --- | ---
`Q_OS_OS2` | We're compiling under OS/2 | everywhere |
`Q_OS_OS2EMX` | We're compiling under OS/2in EMX mode to be run under XFree86/2 | everywhere |
`Q_WS_PM` | We're compiling for the OS/2 PM windowing system | everywhere | This macro is defined if `Q_OS_OS2` is defined, and not if `Q_OS_OS2EMX` is
`HAVE_QCONFIG_CPP` | If defined it means that the `tools` package contains `gconfig.cpp`, that contains static `char*` constants for various Qt installation paths (`QT_INSTALL_*`). Otherwise it is assumed that these constants are `#define`d somewhere in makefiles during compilation. | `qmake` only |
`Q_FS_FAT` | The filesystem Qt lives in is FAT-like (i.e. `;` are used as path separators instead of `:` and so on). | `QDir` class |
`QT_LARGEFILE_SUPPORT` | OS supports manipulations with large (>2/4G) files |  | In OS/2 we currently disable it since only JFS has a support of large files.
`NEEDS_QMAIN` | If defined, then the symbol `main` is redefined as `qMain` |  |
`QWS` | Qt/Embedded ?? |  |
`QT_NO_COMPONENT` | If defined, no dynamic module linking (runtime DLL loading) (?) will be done | some classes | On Windows, this disables (?) COM support and `QPluginManager`. Also, If this is not defined, then `QFileInfo` will use dynamic loading of `ADVAPI32.DLL` to resolve some security info functions. Currently I don't know whether we should take this macro into account under OS/2 or not.
`QT_NO_TEXTCODEC` | If defined, no `QTextCodec` class will be available and all unicode strings will be considered as `latin1` strings | in parts related to the text conversion | In particular, this means that any conversion from Unicode to single byte strings will be done by simple casting of every unicode char to a regular char (i.e. eliminating the high byte of the unicode word) and replacing unicode symbols whose codes higher than `0xFF` with the '`?`' char.
`QT_NO_CODECS` | If defined, there will be no Tamil, ISCII, Herbew and simple codecs | `codecs` module |
`QT_NO_BIG_CODECS` | Will be no big codecs such as Japanese etc. | `codecs` module |
`UNICODE` | if defined, Win32 uses `*W` versions of API functions when the unicode support is available, and `*A` otherwise | win32-related parts of code (anywhere else?) |
`QT_NO_COMPAT` | If defined no obsolete class methods are implemented during Qt compilation | somewhere |
`QT_DLL` | If defined it means that the application is being linked with the DLL version of Qt | `qglobal.h` | only for Win32 at the present
`QT_MAKEDLL` | If defined it means that the DLL version of Qt is being compiled | `qglobal.h` | only for Win32 at the present (linux version compiled under Borland uses `QT_SHARED` define for these purposes)
`Q_QDOC` | Constructs that are visible when this macro is defined, are used to generate the Qt reference documentation (i.e. real constructs used when compiling Qt can differ) | elsewhere |
`QT_NO_PIXMAP_TRANSFORMATION` | When defined, no QPixmap::xForm() and trueMatrix() are available | `QPixmap` and `QBitmap` classes |
`QT_NO_PRINTER` | When defined, no `QPrinter` and `QPSPrinter` classes are available | `QPrinter`, `QPSPrinter` and `QPainter` sources |
`QT_NO_LAYOUT` | No `QLayout*`, `QWidgetItem`, and `Q*Layout` classes, i.e. no layout management | sources of these classes |

# The meaning of some qmake CONFIG options

The table below contains the meaning of some qmake CONFIG variable options that are recognized by qmake and used in some project files.

Option | Meaning | Scope | Notes
--- | --- | --- | ---
`shared` | qmake assumes that the application is linked with the dll version of Qt and automatically adds the `QT_DLL` define |  | Win32
`staticlib` | this is the opposite to `dll` (the latter takes precedence), meaning that a static library (not DLL) is being compiled |  | This meaning in Win32 only (?)