| 1 |
jom - the parallel make tool for Windows |
| 2 |
|
| 3 |
"jom" is "let's go" in Malay. |
| 4 |
Its aimed to be an nmake clone with support for parallel builds. |
| 5 |
The project's wiki is here: http://qt-project.org/wiki/jom |
| 6 |
|
| 7 |
== How to compile jom == |
| 8 |
This is a Qt program, so the usual steps to compile jom on command line are: |
| 9 |
qmake |
| 10 |
nmake |
| 11 |
|
| 12 |
== How to compile jom with cmake == |
| 13 |
We assume that everything we do happens in the folder X:\build-jom |
| 14 |
1. unpack these sources of jom into X:\build-jom\jom |
| 15 |
2. add a build directory somewhere - this normally either is a directory on the same level as the build directory |
| 16 |
or a subdirectory of the source root directory. |
| 17 |
!!! Do not try to build from within the source directory !!! |
| 18 |
3. switch into the build directory and run the following commands: |
| 19 |
|
| 20 |
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 |
| 21 |
... |
| 22 |
|
| 23 |
To take a special version of Qt, append -DQT_QMAKE_EXECUTABLE:PATH=X:\build-jom\qt\bin\qmake.exe . |
| 24 |
|
| 25 |
Now just run: |
| 26 |
|
| 27 |
X:\build-jom\build> nmake && nmake install |
| 28 |
... |
| 29 |
|
| 30 |
If you want to begin new, just throw away the build dir. |
| 31 |
|
| 32 |
== Running the tests == |
| 33 |
To build the unit tests in jom, add the option -DJOM_ENABLE_TESTS=ON to the cmake line. |
| 34 |
To run the tests, you can simply type |
| 35 |
|
| 36 |
X:\build-jom\> nmake test |
| 37 |
... |
| 38 |
|
| 39 |
== .SYNC dependents == |
| 40 |
|
| 41 |
You can use the .SYNC directive on the right side of a description block definition T to |
| 42 |
prevent jom from running all of T's dependents in parallel. |
| 43 |
For example the following description block adds further dependencies between its dependents. |
| 44 |
|
| 45 |
all: Init Prebuild .SYNC Build .SYNC Postbuild |
| 46 |
|
| 47 |
This adds these additional dependencies: |
| 48 |
Build -> Init Prebuild |
| 49 |
Postbuild -> Build |
| 50 |
|
| 51 |
Now the 'Init' and 'Prebuild' targets are built before 'Build'. |
| 52 |
|