# Overview of Geant

Geant is a build tool specifically tailored for the Eiffel programming language.

## Why Geant?

Like the build tool 'make', well known to C and C++ developers 'geant' is a build tool for Eiffel developers. It is based on the ideas of Jakarta Ant, a build tool for the Java programming language.

There are several reasons why this build tool has been created. The first one is that I found it annoying to download interesting Eiffel libraries and having difficulties compiling and using them. Very often I gave up although I did spend quite some time trying to get it running. The frustrating thing in this situation is that you do not really know whether you just did anything wrong or if you simply had no chance to compile or use it since the software is not in a stable state. What I wanted to have is a build procedure and a readme file telling me how to invoke the build procedure so that I could use the software. If the build procedure failed I would know that it wasn't my fault and could send a bug report to the author.

In the Java world there has been exactly the same problem. With the widespread use of Jakarta Ant the situation improved a lot. Having used Jakarta Ant for Java I thought it would be a good idea to have something similar for Eiffel and that's how Geant was born.

Another advantage is that Geant is OS portable (tested on Windows, Linux, Solaris) and that it includes commands (so called tasks) which are tailored specifically for the usage with Eiffel. All available Eiffel compilers are supported.

Reusability in build systems has always been an issue which wasn't addressed properly. Therefore Geant's build scripts can be used as classes: build scripts can inherit from other build scripts.

## How to invoke Geant

Like other build tools geant is invoked on the commandline optionally followed by a so called targetname. Here are some examples (the $ sign represents the shell prompt):

    		  $ geant
    		  $ geant help
    		  $ geant compile

Geant then is looking for a file named 'build.eant' which contains the build instructions. So far all this sounds familiar to anyone who has used make. The first difference we encounter is that the format of 'build.eant' or generally eant files is XML. If you know Jakarta's Java build tool Ant you will see that the syntax is very similar.

## Diving into geant

Introduction to geant

geant examples

geant's tasks

Built-in variables