Although icmake-scripts can be written from scratch to handle program maintenance, often the required actions are highly comparable. This observation resulted in the construction of two icmake-tools: icmstart(1), initializing a directory for program development and icmbuild(1), handling the actual program maintenance. Both come predefined with icmake's distribution, to initialize and maintain C++ programs (or, after minimal adaptation, C) programs). They can also easily be tailored to other programming languages. The icmstart script and icmbuild program can directly be called: icmstart is an icmake script, for which the command-shell calls icmake; icmbuild is a small C program calling icmake to process the icmbuild script in (commonly) /usr/lib/icmake.
This man-page covers icmstart; refer to the icmbuild(1) man-page for information about how icmbuild can be used.
The icmstart script is a generic script that is used to initialize a directory with a basic set of files that are commonly used when developing a C++ or C program.
Icmstart creates an initial directory (here named `top-dir') and installs the files CLASSES, VERSION and icmconf below top-dir. A second argument `program' or `library' may be specified as the default mode of operation of the icmbuild(1) script, usually resulting in adding additional skeleton source files. If the predefined set of files doesn't fit your needs, then the default set can easily be modified. The default set of skeleton files is listed in the file /etc/icmake/icmstart.rc. Refer to the icmstart.rc(7) man-page for information about how this file is structured and how it can be adapted.
After switching to the directory created by icmstart icmbuild(1) may be used for program maintenance.
Icmstart supports the following options, which (when specified) must be icmstart's first arguments:
Skeleton resource files may contain comment (empty lines and lines beginning with the hash-mark (#)). Comment lines are ignored. Otherwise, lines should contain specifications of resource s to be installed.
The default resource specification file is /etc/icmake/icmstart.rc, containing:
CLASSES icmconf P main.cc P main.ih P usage.cc P version.cc P ? scanner P ? parserThis file is overruled by ~/.icmake/icmstart.rc. The ~/.icmake directory (called `configuration directory' below) can be prepared using the following system command:
cp -r /etc/icmake ~/.icmakeThis directory can also contain skeleton files. Default skeleton files are commonly found in /usr/share/icmake, and could be copied to the configuration directory and referred to by the configuration directory's file icmstart.rc. See icmstart.rc(7) for details about how skeleton files can be referred to icmstart.rc.
The configuration files icmstart.rc, AUTHOR, YEARS and VERSION are recognized as skeleton files and are, if available, processed by icmstart.
If the -c option was specified configuration files found in the path specified at this option are used. If not specified or if a file isn't found then the path ~/icmake is inspected. If a configuration file isn't found in ~/icmake either, configuration files in /etc/icmake are used.
Configuration files are optional; if absent icmstart can still be used, but in normal cases at least icmstart.rc is provided.
In addition to icstart.rc consider defining the files AUTHOR, VERSION, and YEARS in the configuration directory:
#define AUTHOR "Frank B. Brokken <email@example.com>"If it does not exist icmstart uses the default:
#define VERSION "1.00.00"If it does not exist icmstart uses the default:
#define YEARS "2020"or a range of years can be defined:
#define YEARS "1992-2020"If it does not exist icmstart uses the default:
The AUTHOR, VERSION, and YEARS definitions are concatenated to one file, called VERSION, installed in the top-level directory.
If the file icmstart.rc does not exist (or is empty) icmstart merely installs the top-level directory, icmconf and VERSION.