[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