Programmers are notorious for estimating the work to do any programming as about an order of magnitude less than it really takes <g>. True ;) So essence: Very low effort to port this to CMake due to existing bjam code What is the difference in CMake terms ? In Boost Build I am fairly sure the checks are done on demand, and usually involves some sort of compile/build/run/test-result cycle which would make pre-testing all checks in a library, and holding the result for further inquiry, pretty expensive. On demand: User calls a function and uses the result (see example) Eager: All checks executed on including the CMake file. (Note: Results are cached, hence this overhead is only once for all libraries for the mono-build), yes high overhead for a single lib, but this is what CMake also does to e.g. get compiler type, version, OS, ... and usage is easier (no additional calls, see examples)