[cmake-developers] [RFC] Fastbuild generator

comic fans comicfans44 at gmail.com
Sat Jan 7 23:59:46 EST 2017


Hello:

Fastbuild is a opensource multi platform build tool which has built-in
cache/distribute (likes ccache/distcc) and pch/unity build
support(http://fastbuild.org/docs/home.html).


@inbilla created fastbuild generator based on 3.2.1 here
https://github.com/inbilla/CMake , this completed almost everything
but didn't continue developing for a while. recently I've rebase his
work on master branch, with some
tweaks(https://gitlab.kitware.com/comicfans/cmake/commits/upstream2),now
it can builds cmake , and almost llvm/clang,  so I'd like to share
this here, hopes more user to test this out.

I haven't touch cmake code before so it may not as good as you think.
If anyone interested to try this code, any comments and suggestion
would be helpful.


How Fastbuild compares to Ninja :
If build locally, fastbuild almost as fast as ninja , but fastbuild
provides simpler distrubte support,you can just run fastbuild worker
on many woker machine (without need to install toolchain) to speed up.
As I tested,

host (4core4thread 8GB ) local build clang:  60 min
host + worker (6core12thread 32GB) distrubite clang : 30 min

Fastbuild Generator current status:

 local build works on linux/windows (I don't have mac to test)

 some cmake variable not set correctly (RUNTIME_OUTPUT_DIRECTORY,
LIBRARY_OUTPUT_DIRECTORY,  how to put CFGIntDir in ?  help needed !),

 distrubte build not work (you can list toolchain exe/dll in header,
or just copy header from fastbuild src's to make distribute build
work) I wonder if cmake has builtin support to list all these files,
help needed!

config/build on windows must run from vs cmd console, because cmake
didn't detect windows SDK for include/link path (Ninja generator also
suffer from this). help needed.

edit CMake files didn't auto trigger fastbuild auto rebuild, must rerun cmake

rerun cmake makes fastbuild rebuild everything. this is fastbuild's
shortcoming, author is working on this.

custom commands will generate script file (bash/bat) ,should we write
commands as argument to sh/cmd , or improve this in fastbuild ?


More information about the cmake-developers mailing list