Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

77 lines (65 sloc) 3.119 kb
Adjusting build flags:
and rebuild.
Building tests requires gtest, to get it:
- On older Ubuntus you can apt-get install libgtest.
- On newer Ubuntus it's only distributed as source;
1) apt-get install libgtest-dev
2) ./configure --with-gtest=/usr/src/gtest
- Otherwise you need to download it, unpack it, and pass --with-gtest
as appropriate.
Test-driven development:
Set your build command to
./ninja ninja_test && ./ninja_test --gtest_filter=MyTest.Name
now you can repeatedly run that while developing until the tests pass.
Remember to build "all" before committing to verify the other source
still works!
Testing performance impact of changes:
If you have a Chrome build handy, it's a good test case.
Otherwise, has a copy of
the Chrome build files (and depfiles). You can untar that, then run
path/to/my/ninja chrome
and compare that against a baseline Ninja.
There's a script at misc/ that repeatedly runs a command like
the above (to address variance) and summarizes its runtime. E.g.
path/to/misc/ path/to/my/ninja chrome
For changing the depfile parser, you can also build 'parser_perftest'
and run that directly on some representative input files.
Coding guidelines:
- Function name are camelcase.
- Member methods are camelcase, expect for trivial getters which are
underscore separated.
- Local variables are underscore separated.
- Member variables are underscore separated and suffixed by an extra underscore.
- Two spaces indentation.
- Opening braces is at the end of line.
- Lines are 80 columns maximum.
- All source files should have the Google Inc. license header.
- Also follow this style:
Documentation guidelines:
- Use /// for doxygen.
- Use \a to refer to arguments.
- It's not necessary to document each argument, especially when they're
relatively self-evident (e.g. in CanonicalizePath(string* path, string* err),
the arguments are hopefully obvious)
Generating the manual:
sudo apt-get install asciidoc --no-install-recommends
./ninja manual
Windows development on Linux (this is kind of hacky right now):
- Get the gtest source, unpack it into your source dir
- sudo apt-get install gcc-mingw32 wine
- export CC=i586-mingw32msvc-cc CXX=i586-mingw32msvc-c++ AR=i586-mingw32msvc-ar
- ./ --platform=mingw --host=linux --with-gtest=gtest-1.6.0
- Build ninja: /path/to/linux/ninja
- Run: ./ninja.exe (implicitly runs through wine(!))
Windows development on Windows:
- install mingw, msys, and python
- in the mingw shell, put Python in your path, and: python
- to reconfigure, run 'python'
- remember to strip the resulting executable if size matters to you
- you'll need to rename ninja.exe into my-ninja.exe during development,
otherwise ninja won't be able to overwrite itself when building
Using clang:
- Enable colors manually:
CXX='/path/to/llvm/Release+Asserts/bin/clang++ -fcolor-diagnostics' ./
Jump to Line
Something went wrong with that request. Please try again.