docs: Add more tips to productivity.md
Add advice to productivity.md on: - Using ccache to optimal effect - The with-incompatible-bdb configure option - Building less than the entire set of targets
This commit is contained in:
parent
7fa1f6258c
commit
5801dd628d
1 changed files with 28 additions and 0 deletions
|
@ -8,6 +8,7 @@ Table of Contents
|
|||
* [Cache compilations with `ccache`](#cache-compilations-with-ccache)
|
||||
* [Disable features with `./configure`](#disable-features-with-configure)
|
||||
* [Make use of your threads with `make -j`](#make-use-of-your-threads-with-make--j)
|
||||
* [Only build what you need](#only-build-what-you-need)
|
||||
* [Multiple working directories with `git worktrees`](#multiple-working-directories-with-git-worktrees)
|
||||
* [Writing code](#writing-code)
|
||||
* [Format C/C++/Protobuf diffs with `clang-format-diff.py`](#format-ccprotobuf-diffs-with-clang-format-diffpy)
|
||||
|
@ -32,6 +33,17 @@ Install `ccache` through your distribution's package manager, and run `./configu
|
|||
|
||||
To use ccache for all your C/C++ projects, follow the symlinks method [here](https://ccache.samba.org/manual/latest.html#_run_modes) to set it up.
|
||||
|
||||
To get the most out of ccache, put something like this in `~/.ccache/ccache.conf`:
|
||||
|
||||
```
|
||||
max_size = 50.0G # or whatever cache size you prefer; default is 5G; 0 means unlimited
|
||||
base_dir = /home/yourname # or wherever you keep your source files
|
||||
```
|
||||
|
||||
Note: base_dir is required for ccache to share cached compiles of the same file across different repositories / paths; it will only do this for paths under base_dir. So this option is required for effective use of ccache with git worktrees (described below).
|
||||
|
||||
You _must not_ set base_dir to "/", or anywhere that contains system headers (according to the ccache docs).
|
||||
|
||||
### Disable features with `./configure`
|
||||
|
||||
After running `./autogen.sh`, which generates the `./configure` file, use `./configure --help` to identify features that you can disable to save on compilation time. A few common flags:
|
||||
|
@ -43,6 +55,8 @@ After running `./autogen.sh`, which generates the `./configure` file, use `./con
|
|||
--without-gui
|
||||
```
|
||||
|
||||
If you do need the wallet enabled, it is common for devs to add `--with-incompatible-bdb`. This uses your system bdb version for the wallet, so you don't have to find a copy of bdb 4.8. Wallets from such a build will be incompatible with any release binary (and vice versa), so use with caution on mainnet.
|
||||
|
||||
### Make use of your threads with `make -j`
|
||||
|
||||
If you have multiple threads on your machine, you can tell `make` to utilize all of them with:
|
||||
|
@ -51,6 +65,20 @@ If you have multiple threads on your machine, you can tell `make` to utilize all
|
|||
make -j"$(($(nproc)+1))"
|
||||
```
|
||||
|
||||
### Only build what you need
|
||||
|
||||
When rebuilding during development, note that running `make`, without giving a target, will do a lot of work you probably don't need. It will build the GUI (unless you've disabled it) and all the tests (which take much longer to build than the app does).
|
||||
|
||||
Obviously, it is important to build and run the tests at appropriate times -- but when you just want a quick compile to check your work, consider picking one or a set of build targets relevant to what you're working on, e.g.:
|
||||
|
||||
```sh
|
||||
make src/bitcoind src/bitcoin-cli
|
||||
make src/qt/bitcoin-qt
|
||||
make -C src bitcoin_bench
|
||||
```
|
||||
|
||||
(You can and should combine this with `-j`, as above, for a parallel build.)
|
||||
|
||||
### Multiple working directories with `git worktrees`
|
||||
|
||||
If you work with multiple branches or multiple copies of the repository, you should try `git worktrees`.
|
||||
|
|
Loading…
Reference in a new issue