This page describes the steps necessary to build ReactOS.
Getting all you need
Getting a Working Copy
The first step in building ReactOS is getting a copy of the source code.
You can use the exported release source code, but since you are reading this, you are probably interested in keeping up to date with the latest changes, so you will want a "working copy" of ReactOS. To get a working copy of ReactOS, please read the Subversion page.
If you do not use a separate SVN client, the command "ssvn create" from within the build environment will download it.
Setting up a Build Environment
For building ReactOS you also need the official ReactOS Build Environment. Please download and install it from that page.
Make sure that no interfering build environment (such as MSYS) is in your PATH environment variable when building.
Due to a current bug, the build environment can not use a build folder that contains spaces in its path name. Under Windows XP and 2003 you must change the default location of "C:\Documents and Settings\[username]\reactos\".
Before building either the tools or ReactOS itself the output location must be created and prepared. This is an easy step and involves only one command. This command is located in the root of recent revisions of the source code and can be run either from the root directory itself or any other directory you want the build your sources in.
After executing, folder output-MinGW-i386 will be created in root of ReactOS tree. You will be redirected to it.
To build the branch, build tools must be compiled first. This only needs to be done for the first build and whenever there is a change to the build tools.
From your output directory, go to host-tools. Follow specific instruction for your compiler.
cd host-tools make
With the build tools compiled, ReactOS can now be compiled. In the case of CMakeLists being updated it is best to remove the content of the build-ros folder and rebuild ReactOS.
Change to the "reactos" folder located inside output-MinGW-i386:
cd ..\reactos make COMMANDS
Combining the above steps together:
configure.cmd cd host-tools make cd ..\reactos make COMMANDS
Replace "COMMANDS" with the desired build commands, such as "bootcd" or "livecd", listed below:
After you have started a Build Environment Command Prompt, there are certain commands available.
Invoking a build
make This command builds all binaries of ReactOS. They will be placed in the directory specified by the ROS_OUTPUT environment variable. (default: output-i386) All source files, which did not change since the last build, will not be built again.
make bootcd This command works like make, but also generates a bootable ReactOS ISO file (ReactOS.iso) in the base of the working copy. It is wise to tag your Boot-CDs with the revision they were built from if you need to keep many ReactOS ISOs.
make livecd This command generates ReactOS-LiveCD.iso in the base of the working copy. This is the ReactOS Live-CD that runs completely from the CD-ROM
make install This command copies all the ReactOS binaries to their proper installation directory as specified in the ROS_INSTALL environment variable. (default: reactos)
makex Used instead of make will utilize all physical cores on your machine.
clean This command cleans all files of your working copy except the generated ISO files (if any). The next build you make will be completely clean then. Any parameters will recognized as module name and only this module will be cleaned then.
remake This tool cleans one or several specific modules and immediately rebuilds it cleanly.
make depmap This command generates a simple dependency map for all ReactOS components.
make vreport This command generates a version report for all ReactOS components, whose source files have appropriate information for that.
This command is a shortcut for
make all bootcd livecd
This command acts like
make world but uses different debug settings and places the resulting files in separate directories.
This one is the one which creates the maximum of artefacts.
Adding modules to the build process
There are several modules you can add to the build process. For example rosapps contains some additional applications not included by default.
The page Building Modules describes, which modules exist and how to add them to the build process.