A project can be further divided into multiple directories which are called modules. The directory structure of the project VMake is shown in Fig. 3.2. Each module holds a description file to define dependences between files.
Abbildung 3.2: Directory tree of project VMake
Again a project is divided into smaller modules which address a specific problem or area of a project. VMake uses high-level rules with a LISP like syntax. The output of rules is associated to a symbolicName. Source files and generated files within modules are represented by unique and typed objects in VMake. This feature enables extended parameter checking for rules, e.g., that a library is generated from object files. The project definition file and the description file for the small example shown in Chapter 1 are shown in Figure 3.3 and Figure 3.4.
Abbildung 3.3: Simple project definition file vmake.prj for VMake
Abbildung 3.4: Simple description file vmfile.mk for VMake
Since VMake is project oriented, a project must be defined for this example. The dependences defined by the rules are straight forward. The output of each update action is associated to a symbolicName. To allow multiple configurations to be built on one source tree, the configuration specific files, e.g., object, libraries, and programs are stored in configuration dependent directories to avoid conflicts.