This is the command icmbuild that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
icmbuild - A generic, easy configurable, program maintenance script
icmbuild [-h] [-c] args
The icmbuild script is a generic script that can be used to do program maintenance using
Icmbuild requires that the file icmconf is available in the directory where program
maintenance is requested.
Icmbuild assumes that your sources exist in and below the current working directory. The
file icmconf in icmake(1)’s distribution provides an example of an icmconf file that can
be used by icmbuild. In that example icmconf file it is assumed that C++ sources are
maintained, but program maintenance for, e.g., C sources can easily be configured.
Icmbuild() compiles all sources in each of the subdirectories named in the file CLASSES,
and then compiles all sources in the current working directory.
The compiled sources result in object modules which may be kept in a library, against
which the main-object module is linked. It is also possible to specify additional
libraries against which the program must be linked.
If a library is constructed it is kept up to date by icmbuild. When a source is
successfully compiled its new object module will replace the old one that is found in the
library. At that point the object files are no longer required and are removed by
To use icmbuild do as follows:
o Install icmbuild in your path;
o copy icmconf (and probably the file CLASSES) to your project’s base directory
(i.e., the directory in which and where below the project’s sources are found);
o Modify the #defines in the file icmconf to taste;
o Enter the names of subdirectories containing sources on separate lines in the file
Note that the order of the classes mentioned in CLASSES is relevant. New class
(subdirectory) names can always be added, but reordering the lines in the CLASSES
file should be avoided. If reordering is necessary, then first run the command
icmbuild clean to remove all files thus far created by icmbuild. Recompilation is
necessary as the names of the object files contain class order-numbers for
identification. These class-order numbers prevent file-name collisions (e.g., two
classes might use a file data.cc) and thus replacement of a file x.o from class A
by file x.o from class B is prevented;
o Now simply run
from the project’s base directory and let the help-info tell you what your options
are. See the next section for the modes of operation.
Icmbuild recognizes two options, at most one should be specified:
o -h: Provide a short usage overview.
o -c: Clear the screen (using tput clear) before starting the compilation process
Following the optional -c icmbuild() the following arguments may be passed to icmbuild:
clean up remnants of previous activities
build the library (static and optionally the dynamic library)
build the binary program
o program strip
build the stripped binary program
o install program path install the constructed program in the specified path (to be
used after issuing icmbuild program)
o install static path install the constructed static library in the specified path
(to be used after issuing icmbuild library)
o install shared path install the constructed shared library in the specified path
(to be used after issuing icmbuild library) After adding a line to icmconf
#define DEFCOM "program"
icmbuild by default uses the argument program. After adding
#define DEFCOM "strip"
icmbuild by default uses the argument strip. After adding
#define DEFCOM "library"
icmbuild by default uses the argument library.
DEFCOM is ignored when an explicit operational mode is passed to icmbuild.
Use icmbuild online using onworks.net services