Why not use bjam?

ssuming a nontrivial project, following technology developments for years,
what are chances of encountering a situation when bjam does not do it for
unclear reason and googling for the problem does not pop up with a solution?
My experience says it is a certainty. When that happens one falls back on make
files. But then all the previous bjam development becomes useless. Why then
use bjam? I do not know answer to this question.

Naturally, one could study implementation details of bjam. It is a judgement
call. For me, the idea of inventing another scripting language is a big red
flag.

Approaching the matter from a different direction, generalizing over project
building is out there with generalizing over html building, generalizing over
Monte-Carlo simulation or generalizing over features of financial contracts.
There are three important traits in such activities:

1. It is very simple.

2. It is very diverse.

3. Every detail counts.

In such situation, every library is as generic as useless and as useful as
lacking generality. Simplicity prevents forming of sufficiently large
community, thus, only a small subset of practical questions would be answered
on the web. Breaking such tendency has to be a stroke of genius. Until such
genius emerges, every programmer is for himself.

I do not advocate ignorance, however. For example, the -d+2 option of bjam
package has always being a very useful source of information for me. Similar
remark may be made about many other libraries out there that I slightly use.

Why then, am I proposing another library? I had to make it to cover my needs.
So now I have it and I am offering to share it. The library is not general but
covers all C++ activities on this web-site. The main code is roughly 300 lines
and is localized in the files makeFile.py and rules.py in the directory
OTSProjects/python/ots/make/generator. The rest is enumeration of compiler and
linker options with doc strings. Features are added as life develops.