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



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


The icmconf configuration file is used to specify and fine-tune the program maintenance performed by the icmbuild(1) script. It can be used to activate and specify various directives that determine how the program or library maintenance is performed.

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

The icmbuild(1) script ignores empty lines and lines whose first non-blank character is a hash-mark (#) as well as lines whose first non-blank characters are two consecutive forward slashes (//). Long lines can be split over multiple lines by using a final backslash character at lines continuing at the next line (refer to the icmake(1) man-page for further details).


Traditional make-utilities recompile all dependent sources once header files are modified. When developing C++ programs this is hardly ever requird, as adding a new member function to a class does not require you to recompile already existing source files. Recompilation is required when modifying the data member organization of classes.

To handle class dependencies in a more sensible way, icmake(1) checks class dependencies using its support program /usr/lib/icmake/icm-dep, visiting the classes listed in the CLASSES file if icmconf's USE_ALL directive was specified. If a directory mentioned in the CLASSES file contains a file having a name that's equal to the name specified at the USE_ALL parameter, then all sources of classes that depend on that particular class are also recompiled.

Likewise, if the PRECOMP parameter was specified, then a similar action is performed for the precompiled headers: if a local header file that's (directly or indirectly) included by a class's internal header file has changed, then that class's precompiled header as well as all precompiled headers of dependent classes are recompiled.

The icmbuild(1) script itself does not inspect these dependencies, but calls /usr/lib/icmake/icm-dep to perform the requird tests. The program icm-dep's short usage summary is written to the standard output stream when calling icmake -d (or directly: /usr/lib/icmake/icm-dep).



The following directives are available in cases where a program uses a parser generator creating a parser class from a grammar specification:


The following directives are available in cases where a program uses a scanner generator creating a lexical scanner class from a set of regular expressions:


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


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


icmbuild(1) ends displaying a fatal error message if the current working directory does not contain a file icmconf.


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


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