icmconf

icmake.7.22.01.tar.gz

1992-2015


icmconf(7)

icmconf(7)

icmake.7.22.01.tar.gz configuration file for icmbuild(1)

1992-2015

NAME

icmconf - Configuration file for the icmbuild(1) program maintenance script

DESCRIPTION

The icmconf configuration file is used to specify and tailor the characteristics of program maintenance performed by the icmbuild(1) icmake script. It can be used to activate and specify various directives that determine how the program or library maintenance will proceed.

The directives are biased towards the construction of a C++ program, but program maintenance for other languages (e.g., C) can easily be realized as well.

CLASS DEPENDENCIES

Traditional make-utilities recompile sources once header files are modified. In the context of C++ program development this is often a bad idea, as adding a new member to a class does not normally require you to recompile the class's sources. To handle class dependencies in a more sensible way, icmake(1)'s CLASSES file may define dependencies among classes.

If a class Y depends on class X as in:


  class Y: public X
    {
        ...
    };
        
or as in:

    class Y 
    { 
        X d_y; 
        ...
    };
        
then the sources of class Y should be recompiled if X's data organization has changed. In cases like these Y depends on X.

Such class dependencies can be specified in the CLASSES file using the form:


  y   x
    
where x and y are the directories holding the respective class sources. Then, when altering X's data organization, do 'touch x/a', followed by 'icmbuild program': x's sources as well as the sources in directories (in)directly depending on x (e.g., y) are then automatically recompiled by icmbuild.

Multiple dependencies can also be specified. If the class organization looks like this:


    class Z: public Y
    {
        X d_x;
    };
        
then Z depends on both Y and X. In the CLASSES file this may be indicated by the line

    z   x   y
        
Indirect dependencies are automatically followed. After changing X's data organization where CLASSES contains the lines

    x
    y   x
    z   y
        
then 'icmbuild program' results in recompiling all of the sources in classes x, y and z.

By default, class-dependencies are not interpreted. To activate them the line


//#define USE_ALL             "a"
    
in the icmconf file must be uncommented:

#define USE_ALL             "a"
    

Empty lines and lines whose first non-blank character is a hash-mark (#) or whose first non-blank characters are two consecutive forward slashes (//) are ignored. Long lines can be split over multiple lines by using a final backslash character at lines which continue at the next line. E.g.,


    name1 depends on     multiple other classes
        

ICMCONF PARAMETERS

OBSOLETE DIRECTIVES

FILES

The mentioned paths are sugestive only and may be installation dependent:

SEE ALSO

icmake(1), icmbuild(1), icmstart(1), icmstart.rc(7).

BUGS

The interpretation of the class dependencies (see section COMPILING AND LINKING has altered when icmake was updated to version 7.16.00.

COPYRIGHT

This is free software, distributed under the terms of the GNU General Public License (GPL).

AUTHOR

Frank B. Brokken (f.b.brokken@rug.nl).