Cool. Modular architecture...
Well, you would not expect Gimp to run without X either, would you... has nothing to do with being modular
I do see your point, it is indeed a nice feature to have, but it will be quite hard to implement as it is now.
You can get the wxWidgets "port" that works entirely without a GUI by compiling with USE_GUI = 0.
wxExecute() works, and almost everything that is not ifdef'ed with wxUSE_GUI does.
Yeah well, Takeshi... that's exactly the problem.
USE_GUI = 0 won't do us.
wxExecute() works
wxExecute in particular will
not work, at least not the way we use it. For asynchronous operation,
wxExecute posts data coming from the child process' pipe onto the message queue (and even more so, the compiler plugin uses the same mechanism to forward the events). It absolutely needs a functional message queue, or else the pipe will fill up and after 4k of output both the IDE and the child process deadlock.
Command line compilation is much faster, than the one, using IDE. For big applications it'd be quite good to have makefile export feature, so you can develop app using C::B and do full rebuilds in command line.
That's outright wrong. I have been building and testing "big" applications (well... 700-1300 source files, if you call that "big") both with makefiles and with Code::Blocks, and the Code::Blocks build system takes on the order of 30% less time.
For the record wxWidgets starts up the message loop in wxApp::Initialize, so if you overload that method and do all processing there. Then return with false and not call wxApp::Initialize you shouldn't have any problem.
I have no experience with this, so there's little I can tell, but I would be surprised if it were that easy (though it would be good). You still have to emulate a genuine event loop IMO, or else none of your pipes will work (they all rely on the event loop). For our own stuff, we could call the plugin member functions directly instead of sending messages, but that won't hold true for the pipes. Of course, one could simply use
popen() for that special case, too... but then we're no longer cross-platform, and I am not sure inhowfar it is painless to integrate something like
popen() into the build process (which runs asynchronously, controlled by events).