So I tend to solution 1: Add the creation of that output folders either to the pre- or post-build steps.
I like this solution, because I think each target should contain its own "update" script(not copy or zip other target's data).
I think put the creation of folders in the target's post-build step is better than pre-build
This can also solve the problem as Tim said:
Calling update.bat will mean that the output folder copy of Code::Blocks can not be used to build the devel copy of code::blocks.
Tim S.
Mainly, the update.bat do three things:
1, create necessary folders under devel folder
2, copy/zip necessary XRC files to devel folder
3, copy all the necessary files from devel folder to output folder, and run strip.
I think the step 3 is not necessary when I'm developing/debugging C::B.