yes no problem with that.
and yes c::b has a nice project format.
it also has a workspace concept which is a group of project with dependency management among projects.
what about keeping a one-file one-project-and-many-targets fashion, and a separate program group concept, which load existing projects? (this is the code blocks model)
for genlib you would have a genlib-main project, a series of genlib-example-* projects and a genlib project group which gathers all projects?
this gives me the idea of virtual projects that only have dependencies (to build all projects at once) and no source files. what do you think?
sample xml file in my view:
<project name="toto" type="binary|staticlib|kernellib|...">
<!-- files for all targets-->
<file name="../src/main.c" />
<file name="../include/lib.h"/>
<file name="../src/asm/target.s" />
<lib name="/usr/lib/ti/libmath.a" />
<target name="ti89-debug" model="ti89">
<file name="../src/ti89.c" dispfolder="platform/ti89" />
<lib name="/usr/lib/ti/libalacon-89.a" dispfolder="libraries" />
<compiler options="-g -DTI89" />
</target>
<target name="ti92-debug" model="ti92p">
<file name="../src/ti92p.c" dispfolder="platform/ti89" />
<lib name="/usr/lib/ti/libalacon-92p.a" dispfolder="libraries"/>
<compiler options="-g -DTI92PLUS" />
</target>
</project>
<project type="group">
<ref project="library.gpr" />
<ref project="example1.gpr" depends="library.gpr" />
<ref project="example2.gpr" depends="library.gpr" />
<virtual name="all examples" depends="example1.gpr example2.gpr" />
seriously, we need to define the syntax more precisely.
-human readable
-multiple projects runnable with a single command -> project groups
-relative filename support, at the user option (default relative for source files, can be made absolute; default absolute for libraries, can be made relative)
-multiple targets with different file sets and options
-build has to be done on real FS paths even if files are displayed in virtual directories.
-project groups in separate files
-virtual projects in project groups, only have dependencies, used to build groups of projects in one command
-project extension .gpr, project group extension .ggp, .gpg, .gpx (?)