Ninja is a build system written with the specific goal of improving the edit-compile cycle time. It is used by default everywhere except when building for iOS.
Ninja behaves very similar to Make -- the major feature is that it starts building files nearly instantly. (It has a number of minor user interface improvements to make as well.)
Read more about Ninja at the Ninja home page.
Ninja is included in
depot_tools so there's nothing to install.
To build Chrome:
cd /path/to/chrome/src ninja -C out/Debug chrome
out/Release for a release build. I recommend setting up an alias so that you don't need to type out that build directory path.
If you want to build all targets, use
ninja -C out/Debug all. It‘s faster to build only the target you’re working on, like
Identical to Linux, just make sure
OS=android is in your
GYP_DEFINES. You want to build one of the apk targets, e.g.
Similar to Linux. It uses MSVS's
link.exe, etc. so you still need to have VS installed. To use it, open
cmd.exe, go to your chrome checkout, and run:
set GYP_DEFINES=component=shared_library python build\gyp_chromium ninja -C out\Debug chrome.exe
component=shared_library is optional but recommended for faster links.
You can also set
GYP_GENERATORS=ninja,msvs-ninja to get both VS projects generated if you want to use VS just to browse/edit (but then gyp takes twice as long to run).
If you‘re using Express or the Windows SDK by itself (rather than using a Visual Studio install), you’ll need to run from a vcvarsall command prompt.
Miss VS for debugging?
devenv.com /debugexe chrome.exe --my-great-args "go here" --single-process etc
Miss Xcode for debugging? Read http://dev.chromium.org/developers/debugging-on-os-x/building-with-ninja-debugging-with-xcode
That is, building with just the WinDDK. This is documented in the regular build instructions.
Pass a flag like
-k3 to make Ninja build until it hits three errors instead of stopping at the first.
Pass a flag like
-j8 to use 8 parallel processes, or
-j1 to compile just one at a time (helpful if you're getting weird compiler errors). By default Ninja tries to use all your processors.
There are more options. Run
ninja --help to see them all.
You can write a specific build config to a specific output directory via the
-G flags to gyp. Here's an example from jamesr:
build/gyp_chromium -Gconfig=Release -Goutput_dir=out_profiling -Dprofiling=1 -Dlinux_fpic=0
If you encounter any problems, please file a bug at http://crbug.com/new with label
ninja and cc
scottmg@. Assume that it is a bug in Ninja before you bother anyone about e.g. link problems.