I am not taking the "how it is done" into account at this time.
Having CB as a build system is extremely good, since it can easily cope with different compilers, so when doing multi platform code (win/linux/embedded ports), CB is so much easier.
I have a project for my library, and per "platform" 2 targets (debug versus release build). And building the CB project ==> all is build. When keeping this in makefiles (and let's assume the generated ones, so I don't have to manage dependencies/includes twice) it becomes more complicated and more possibilities for errors.
On the other hand, the cbp makefile gen plug-in :
- is great
- is not part of contrib (we should add it)
- should be run automatically
Meaning you need to run CB in headless mode in order to have it run the makefile gen plug-in. :-(
And the use cases I already mentioned above, having a dedicated target that is the invocation of :
- doxygen
- valgrind
- cppcheck
- cccc
- ...
will be another super feature (@Jens : when do you think you will have the cppcheck invocation ready ;-) )
So on the feature level, I think this is a really powerful feature.
On the how, the best would be that core code is completely separated from the user interface code (a good design strategy anyway [maintenance, testability, ..)) , but ifdef can be a first step.
What do you think ?