(Free) Software Building and Packaging For Windows

Comparison with other systems

There are several other environments based on mingw-w64. More than one being universally better than others, they target different goals and use various approaches. This page attempts to explain how they compare to Win-builds.

The first usual difference is the release frequency and therefore the amount of testing that can go in packages. The belief behind Win-builds is that it is better to play it safe when targeting Windows and that there are already enough bugs in the software world to not try to get even more by being bleeding-edge at all costs (this doesn't mean settling for old software either).

The second typical difference is that only Win-builds runs on both Windows and Linux (and possibly others) with most of the files shared between platforms. This should matter especially if you are using several systems during your development.

Compared to Cygwin

Cygwin is a POSIX-like environment which runs on Windows and is installed through a package manager.

It offers many packages but the executables are built against cygwin, i.e. they use its POSIX compatibility layer which makes system function calls much slower and has licensing consequences.

However it includes compilation toolchains that target Windows directly and which output won't use the POSIX layer.

It is best to think of building Windows applications on Cygwin as a special case of cross-compilation which can also run the applications that have been cross-compiled. Cygwin provides a great platform for doing the build and using many UNIX tools.

Cygwin itself has very few packages with executables which don't use the POSIX layer but Win-builds can be used to provide native libraries that your application will use.

Compared to Fedora/RHEL/CentOS and OpenSuse

Packages in these Linux distributions have existed for several years. There are many of them and they are well-maintained. It's possible to use the library packages on another Linux distribution or on Windows but it's not trivial either and will require a compatible toolchain.

Compared to MXE

MXE is not a binary distribution but a set of build recipes which can be run by invoking make. It has a larger set of recipes but builds only static libraries which make updates more difficult and make it harder to comply with licenses such as the LGPL. It also does not run on Windows. Since it builds everything, it can take a long time to install.

Compared to Mingw-builds

TBD. Some large differences: very bleeding-edge, many patches, only runs on Windows.