
GN
GN is a free meta-build system that generates Ninja build files for software projects.
What GN is
GN is a free meta-build system that generates Ninja build files for software projects. It is used as the build system for Chromium, Fuchsia, and related projects, and is designed for projects with thousands of build files and tens of thousands of source files. GN supports multi-platform projects and can target several platforms in one build invocation. Separate output directories allow different platform or build-type configurations to run in parallel. It generates Ninja files for C, C++, Rust, Objective C, and Swift; other languages can use script-based action rules. Dependency, input, and output checks are available through features such as `gn check`, `testonly`, and `assert_no_deps`. Developers configure build directories and arguments, while Ninja files are regenerated when outdated. Cross-compilation uses target OS and CPU arguments, including Android and ChromeOS examples. Binaries are provided for Linux, macOS, and Windows, and the project documents building from source with a C++23 compiler.
Good
- Free plan with no charge
- Targets multiple platforms in one invocation
- Supports separate parallel output configurations
- Generates files for several languages
- Provides dependency and output checks
Watch out
- No stable version for every project
- Backward compatibility is not guaranteed
- Projects must choose a compatible commit
Who it suits
GN suits developers managing large, multi-platform projects that build through Ninja. It is useful when separate configurations, cross-compilation, and build checks are needed.
Verdict
GN fits teams that need scalable Ninja generation across platforms and configurations. Its version compatibility policy requires projects to select and maintain a suitable GN version.
Plans and prices
From GN's own pricing page, checked 9 Oct 2001.
| Plan | Price | What it gives you |
|---|---|---|
| GN | Free | No stable version for all projects · Developers select a compatible commit or build from source · No charge stated; source repository and binary downloads are provided by Google. |
The facts
Each one read from GN's own pages, with the date it was checked.
What it does
- Build checks
- GN checks dependencies, inputs, and outputs where possible, and includes tools such as `gn check`, `testonly`, and `assert_no_deps`.checked 9 Oct 2001
- Build directory workflow
- Users configure build directories and arguments, and Ninja files are regenerated automatically when they are out of date.checked 9 Oct 2001
- Compatibility limit
- GN does not guarantee backward compatibility for new versions and has no versioning scheme beyond commits to the main branch.checked 9 Oct 2001
- Cross-compilation
- The quick start documents cross-compiling by setting target OS and CPU build arguments, including Android and ChromeOS examples.checked 9 Oct 2001
- Downloads
- The project provides GN binaries for Linux, macOS, and Windows, and also documents building GN from source with a C++23 compiler.checked 9 Oct 2001
- Languages
- GN generates Ninja files for C, C++, Rust, Objective C, and Swift; other languages can use script-based action rules.checked 9 Oct 2001
- Parallel configurations
- It supports multiple output directories with separate configurations so developers can maintain builds for different platforms or build types in parallel.checked 9 Oct 2001
- Purpose
- GN is a meta-build system that generates build files for Ninja.checked 9 Oct 2001
- Scale
- It is designed to scale to thousands of build files and tens of thousands of source files.checked 9 Oct 2001
- Security and compliance
- The project page links contributors to Google’s Contributor License Agreement; it does not state a security certification or compliance program.checked 9 Oct 2001
- Support
- Users can report bugs in the GN bug database and ask questions or follow development on the Chromium GN developers Google Group.checked 9 Oct 2001
- Toolchain integration
- GN generates Ninja build files and can integrate with compiler and linker settings defined by a project’s build configuration.checked 9 Oct 2001
- Use cases
- GN is used as the build system for Chromium, Fuchsia, and related projects.checked 9 Oct 2001
- Versioning limit
- GN has no current stable version intended to work for all projects; projects are expected to choose a compatible GN version.checked 9 Oct 2001
Where it runs
- Platform builds
- GN supports multi-platform projects and can target multiple platforms in a single build invocation.checked 9 Oct 2001
Alternatives to GN
- 1

AWS CodeBuild
Free planWebAPILinuxmacOS7.9From $0.01 a month - 2

fastlane
Free planAndroidiOSLinuxmacOS7.4Free plan - 3

Nx
Free planWebLinuxmacOSSelf-hosted7.2From $29 a month - 4

Bazel
Free planLinuxmacOSWindows6.7Free plan - 5

FASTBuild
Free planLinuxmacOSWindows6.6Free plan - 6
Open Build Service
Free planWebAPILinuxSelf-hosted6.6Free plan
