[Cmake] Progammer Work Space Configuration
Neil Killeen
Neil.Killeen at atnf.csiro.au
Tue Mar 4 23:20:00 EST 2003
Hello
Having developed a toy-medical imaging platform that
uses itk, vtk and fltk. I now would like to get on with
fleshing it out properly and open it for development
by our programming team.
The main remaining issue for me is how to manage programmer work spaces.
So:
I have created a (master) system along the lines of
/oursystem/code/applications/app1
/app2
/modules /module1
/module2
/binary/linux /lib
/bin
/sun4sol/lib
/bin
etc.
. This filesystem will be administered via cvs
. Regular (daily/weekly) cron builds will regenerate the various platforms
(linux and solaris here)
. Now I have a team of developers who I wish to share this system and
develop with it. How is the best way to manage their work space ?
I imagine that
- Each programmer maintains a parallel copy of the code tree
presumably via cvs. It is only populated by the pieces of code
that they are working on.
/myhome/oursystem/code/modules/module1
/module2/segment.cxx
segment.h
/applications/app1
/app2/segmenter.cxx
So here the programmer is only working on class 'segment' in module2
and application 'segmenter' in app2, which uses this module.
- Each programmer has their own binary output location in their
directory tree
/myhome/oursystem/code/...
/binary/linux/lib
/bin
- To build and test their code, the programmer should presumably
be able to link with what ever library they have built locally
plus the system libraries.
So for example, if the programmer is working in module2 on class
'segment' and wishes to test application 'segmenter'
They should be able to build module2.a from segment.cxx; the system
looks for all code and include files in their local tree
first, and then in the /oursystem/code tree if its not there.
I.e. they should only need to populate the piece of the code tree that they
are working on. The resultant library goes to their personal binary
output location.
Then when they link segmenter, it uses the library (module2.a) in
their own binary tree plus the system ones in /oursystem/binary/lib/*.a
I.e. I want to avoid every programmer having to have a copy of the
entire system which they are forever buildng and keeping up to date.
Is this the way projects like ITK and VTK for example, manage
shared development ? If so, I have no idea how to configure the system
(CMake) so that it recognizes system and programmer workspaces, building
appropriately.
The brute force way would appear to be that in the programmers
binary directory, the top-level CMakeCache.txt file would
need to be reconfigured in some way - it would need to reference
their own code tree as well as the system one.
Hoping this is easier than I seem to be making it...
regards
Neil
More information about the CMake
mailing list