Adjusting build flags: CFLAGS=-O3 ./configure and rebuild. 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! 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: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml 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): - sudo apt-get install gcc-mingw32 wine - export CC=i586-mingw32msvc-cc CXX=i586-mingw32msvc-c++ AR=i586-mingw32msvc-ar - ./configure.py --platform=mingw - Build gtest: - unpack it into your source dir - ./configure - to work around missing _TlsAlloc I had to hack the libtool script to append -lmingw32 -lkernel32 at the *end* of the link line - Build ninja: /path/to/linux/ninja ninja - Run: ./ninja (implicitly runs through wine(!)) Windows development on Windows: - install mingw, msys, and python - in the mingw shell, put Python in your path, and: sh bootstrap.sh - to reconfigure, run 'python configure.py' - 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' ./configure.py