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 #defined 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 (?)