Boost logo

Boost :

Subject: Re: [boost] CMake and Boost Build tests
From: Robert Ramey (ramey_at_[hidden])
Date: 2017-07-27 15:08:33

On 7/27/17 1:24 AM, Edward Diener via Boost wrote:

>> In bjam I can make a "rule" which passes "usage requirements".
> You do not have to make a rule since the builtin "project" rule already
> does this for you.

Right - but in anything more than a trivial case, I always had to make
my own rule - then I have to start learning a whole bunch of stuff I
never wanted to know. Then it sucks gobs of time. Then ...
This is not so much a critcism of bjam - all systems - CMake included,
have similar problems.

> So CMake has no way built-in command to say "here are the usage
> requirements for every target in this directory" other than to have to
> write a "function" each time ? That seems a bit poor.

Well there is a long list of built in functions just as in bjam there is
a long list of built in "rules". As I've said, the systems are actually
more alike than different. This fact is obscured by the very irregular
syntax and unorthogonal design used by all such systems. This is forced
in turn by the fact that the "build" problem is itself ad-hoc with
designers adding features and facilities and requirements willy-nilly
and trying to patch all this up with a "build" system. IDEs sort of
"fix" this problem - for one release then they change it for the next
one. The whole thing is continuing agony. I can't fix this, and tool
providers have failed to do so. I have my own theory for why this is
so, but it's too off topic.

Bottom line:
a) All of these systems work well in trivial toy problems
b) None of these systems "work" well in real world cases
c) All of these systems can be made to "work" for each case
d) All of the require investment of effort to realize c) above

One thing about CMake which is unique and actually a genius idea.
Rather than try to actually build the project, build the make, or ide
files that build the project. This extra level of indirection has made
CMake more useful to me overall than bjam - in spite of having it's own
short comings. Among the things I've never understood about bjam/boost
build is why no one ever was tempted to add the options to create
ide/make projects. This would have added to bjam the one thing that
CMake has but boost build doesn't. I'm guessing that doing this would
be a lot of unrewarded work. Doesn't matter now.

> No I don't go to CPPCon but if you can get programmers to create better
> documentation by your talk there I am all for it.

I'm sort of pessimistic:

a) I don't think that most developers think there is a problem. That is
that the documentation they create is just fine.
b) If there is a problem, it's that the users aren't smart enough
c) Hence, I think that most developers will read the abstract and
conclude that the subject is trivial and doesn't hold any value for them.

The funny thing is that this conflicts with users experience - even when
the users are library developers themselves!!!

But I'm a sucker for lost causes.

Robert Ramey

Boost list run by bdawes at, gregod at, cpdaniel at, john at