Building Qt on Windows

Download the sources from http://qt.nokia.com/downloads (choose “LGPL” and “Framework Only”) and run the installer. Accept the default answer to every question and ignore the warning about using the wrong MinGW version (the one Qt wants to use is prehistoric and completely unusable).

There is (at least) one known bug in 4.4.x, which is that Qt includes incorrect prototypes for Windows's atomic increment / decrement / compare / exchange primitives, see for instance:

http://lists-archives.org/mingw-users/11846-problem-compile-qt-4-4-2-with-latest-w32api.html

http://bugreports.qt.nokia.com/browse/QTBUG-5670 which indicates that this may be fixed in the upcoming 4.6.0 (or then again, it may not).

As a workaround, edit C:\Qt\4.4.0\src\corelib\arch\qatomic_windows.h (or the equivalent on your system). In the declaration block on lines 392-398, add a volatile qualifier to the first argument of each prototype:

extern "C" {
__declspec(dllimport) long __stdcall InterlockedCompareExchange(volatile long *, long, long);
__declspec(dllimport) long __stdcall InterlockedIncrement(volatile long *);
__declspec(dllimport) long __stdcall InterlockedDecrement(volatile long *);
__declspec(dllimport) long __stdcall InterlockedExchange(volatile long *, long);
__declspec(dllimport) long __stdcall InterlockedExchangeAdd(volatile long *, long);
}