jom - the parallel make tool for Windows It's aimed to be an nmake clone with support for parallel builds. The project's wiki is here: http://wiki.qt.io/Jom == How to compile jom == Jom is a Qt program. The steps to compile jom on command line are: qmake nmake == How to compile jom with cmake == We assume that everything we do happens in the folder X:\build-jom 1. unpack these sources of jom into X:\build-jom\jom 2. add a build directory somewhere - this normally either is a directory on the same level as the build directory or a subdirectory of the source root directory. !!! Do not try to build from within the source directory !!! 3. switch into the build directory and run the following commands: X:\build-jom\build> cmake X:\build-jom\jom -G "NMake Makefiles" -DCMAKE_PREFIX_PATH=X:\build-jom -DCMAKE_INSTALL_PREFIX=X:\build-jom\install ... To take a special version of Qt, append -DQT_QMAKE_EXECUTABLE:PATH=X:\build-jom\qt\bin\qmake.exe . Now just run: X:\build-jom\build> nmake && nmake install ... If you want to begin new, just throw away the build dir. == Running the tests == To build the unit tests in jom, add the option -DJOM_ENABLE_TESTS=ON to the cmake line. To run the tests, you can simply type X:\build-jom\> nmake test ... == Environment variables == Like nmake, jom reads default command line arguments from an environment variable: JOMFLAGS. If JOMFLAGS is not set, MAKEFLAGS is read. This is useful to set up separate flags for nmake and jom, e.g. set MAKEFLAGS=L set JOMFLAGS=Lj8 == .SYNC dependents == You can use the .SYNC directive on the right side of a description block definition T to prevent jom from running all of T's dependents in parallel. For example the following description block adds further dependencies between its dependents. all: Init Prebuild .SYNC Build .SYNC Postbuild This adds these additional dependencies: Build -> Init Prebuild Postbuild -> Build Now the 'Init' and 'Prebuild' targets are built before 'Build'.