Clone this repo:
  1. 17cc456 json_project_writer: Output response_file_contents for action and action_for_each by Kimmo Kinnunen · 4 days ago master
  2. 36c66bf Add additional surce files and example the list of acceptable files by Julie Hockett · 9 days ago
  3. 04f5df5 [args] Fix gn args unstable output by Haowei Wu · 5 days ago
  4. bc3fe2a [] Use relative -I switches and source paths by Roland McGrath · 9 days ago
  5. 8730b0f Disallow non-buildable sources in binary targets by Tom Anderson · 10 days ago


GN is a meta-build system that generates build files for Ninja. There is documentation in docs/ and a presentation on it.

Getting started

You can download the latest version of GN binary for Linux, macOS and Windows.

Alternatively, you can build GN from source:

git clone
cd gn
python build/
ninja -C out
# To run tests:

On Windows, it is expected that cl.exe, link.exe, and lib.exe can be found in PATH, so you'll want to run from a Visual Studio command prompt, or similar.

On Linux and Mac, the default compiler is clang++, a recent version is expected to be found in PATH. This can be overridden by setting CC, CXX, and AR.

Reporting bugs

If you find a bug, you can see if it is known or report it in the bug database.

Sending patches

GN uses Gerrit for code review. The short version of how to patch is:

Register at

... edit code ...
ninja -C out && out/gn_unittests

Then, to upload a change for review:

git commit
git cl upload --gerrit

When revising a change, use:

git commit --amend
git cl upload --gerrit

which will add the new changes to the existing code review, rather than creating a new one.

We ask that all contributors sign Google's Contributor License Agreement (either individual or corporate as appropriate, select ‘any other Google project’).


You may ask questions and follow along w/ GN‘s development on Chromium’s gn-dev@ Google Group.