Chromium supports building on Windows, Mac and Linux host systems. Linux is required for building Android, and a Mac is required for building iOS.
This page documents common checkout and build instructions. There are platform-specific pages with additional information and requirements:
Check out and install the depot_tools package. This contains the custom tools necessary to check out and build.
Create a chromium directory for the checkout and change to it (you can call this whatever you like and put it wherever you like, as long as the full path has no spaces):
mkdir chromium cd chromium
Use the “fetch” tool that came with depot_tools:
fetch chromium # [fetch --no-history chromium] cd src # All other commands are executed from the src/ directory.
Use --no-history
if you don't need repo history and want a faster checkout. Expect a checkout to take at least 30 minutes on fast connections, and many hours on slower connections.
Some platform-specific pages (linked above) may have extra instructions. In particular, on Ubuntu Linux run:
./build/install-build-deps.sh
Optional: install API keys which allow your build to use certain Google services. This isn't necessary for most development and testing purposes.
Run hooks to fetch everything needed for your build setup.
gclient runhooks
To sync to newer versions of the code (not necessary the first time), run the following in your src/ directory:
git rebase-update gclient sync
The first command updates the primary Chromium source repository and rebases your local development branches on top of tip-of-tree. The second command updates all of the dependencies specified in the DEPS file. See also “More help managing your checkout” below.
GN is our meta-build system. It reads build configuration from BUILD.gn
files and writes Ninja files to your build directory. To create a GN build directory:
gn gen out/Default
out/Default
with another name inside the out
directory.gn help
on the command line or read the quick start guide.Build Chromium (the “chrome” target) with Ninja using the command:
ninja -C out/Default chrome
List all GN targets by running gn ls out/Default
from the command line. To compile one, pass to Ninja the GN label with no preceding “//” (so for //ui/display:display_unittests
use ninja -C out/Default ui/display:display_unittests
).
You can run chrome with (substituting “Default” with your build directory):
out/Default/chrome
out\Default\chrome.exe
out/Default/Chromium.app/Contents/MacOS/Chromium
Run the test targets listed above in the same manner. You can specify only a certain set of tests to run using --gtest_filter
, e.g.
out/Default/unit_tests --gtest_filter="PushClientTest.*"
You can find out more about GoogleTest on the GoogleTest wiki page
See contributing code for a more in-depth guide.
git checkout -b my_patch *...write, compile, test...* git commit -a git cl upload
The git cl upload
command will upload your code review to codereview.chromium.org for review.
git rebase-update
).git map-branches
).git status
).#chromium
IRC channel on irc.freenode.net
(see the IRC page for more).