Developer Tools

Kaustubh Shamshery edited this page Nov 9, 2018 · 22 revisions


ccache works as a wrapper for C/C++ compiler and dramatically shorten the building time by caching the temporary files safely. It works even when you clean up your entire build (e.g. git clean -dfx or make clean, if apply).


  • MacOS: brew install ccache
  • Ubuntu 16.04: sudo apt install ccache


Speeding up different builds in the same directory

No configuring needed as CMake will find it and adopt it. It even accelerates build

Speeding up different builds in different directories

Two options needed to be appended to ccache config file $HOME/.ccache/ccache.conf. If the config file or the directory does not exist, you need to create them.

hash_dir = false

COMMON_ABSOLUTE_PATH takes the common absolute path of two or more build directories. (e.g. It will be /home/user/workspace if you have two build directories /home/user/workspace/zilliqa1 and /home/user/workspace/zilliqa2)

Cleaning up the cache if something went wrong

See man ccache to select either ccache --clear or ccache --cleanup.

clang-format and clang-tidy


The version (7.0.0+) is required:

  • MacOS:

    brew install llvm@7
  • Ubuntu 16.04 (as in

    Create file /etc/apt/sources.list.d/llvm-7.list with the following content

    deb llvm-toolchain-xenial-7 main
    deb-src llvm-toolchain-xenial-7 main

    Then run

    curl | sudo apt-key add -
    sudo apt-get update
    sudo apt-get install clang-format-7 clang-tidy-7 -y

Also, pyyaml is required: pip install pyyaml


Use ./ style or add -DLLVM_EXTRA_TOOLS=ON flag to cmake

Check (or fix) coding style violations

  • make clang-format: check the codebase against .clang-format and fail upon any violation.
  • make clang-format-fix: apply the suggested changes directly

Check (or fix) wrong coding practices

  • make clang-tidy: check the codebase following .clang-tidy and suggest the changes
  • make clang-tidy-fix: apply the suggested changes directly


see cmake/LLVMExtraTools.cmake.



  • MacOS: brew install git-extras
  • Ubuntu 16.04: sudo apt-get install git-extras


Checking out a specific pull-request locally

If you want to check someone's pull-request, you can just do

git pr PR_NUMBER
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.