What is GN?
GN is a meta-build system that generates NinjaBuild files so that you can build Chromium with Ninja.
Why did you switch from GYP?
- We believe GN files are more readable and more maintainable than GYP files.
- GN is fast:
- GN is 20x faster than GYP.
- GN supports automatically re-running itself as needed by Ninja as part of the build. This eliminates the need to remember to re-run GN when you change a build file.
- GN gives us better tools for enforcing dependencies (see
gn check
and the visibility
, public_deps
, and data_deps
options for some examples). - GN gives us tools for querying the build graph; you can ask “what does X depend on” and “who depends on Y”, for example.
What's the status of the GYP->GN migration?
As of Oct 2016:
- All of the Chromium builds have been switched over.
- Nearly all of the GYP files have been deleted from the Chromium repos.
- You can no longer build with GYP as a result.
- There are still some GYP files in place for the “Closure Compilation” builders that need to be converted over.
- Some related projects (e.g., V8, Skia) may still support GYP for their own reasons.
- We're still cleaning up some odds and ends like making gclient not still use GYP_DEFINES.
I want more info on GN!
Read these links: