[[Property:title|A Look at the Project Directory]]
[[Property:weight|-11]]
[[Property:uuid|d82eae3f-fe0d-3e27-008e-61afd05f8cb0]]
Before we proceed with the facilities of the environment, let's take a look at the way EiffelStudio organizes project files.

With EiffelStudio, you build projects. Most projects yield an executable system, although you can also build a project just to define a library for use by such systems.

Every session is relative to a project; you can start a new project from within EiffelStudio by following the menu path:
<code lang="text">
File --> New Project
</code>
... but please '''don't select that menu entry now''' as we have many more things to do with our current project first. 

Every project has a '''project directory''' which will contain the files generated and managed by EiffelStudio. The project directory may also host some of the source files containing your Eiffel classes, the ECF (eiffel configurationl file), and external software written in other languages. However, it is not required that everything be stored together; the source files and ecf may reside anywhere. Some users, in fact, like to put nothing other than the EiffelStudio-generated files in the project directory; this separates user-managed and system-managed files, and can facilitate configuration management, backups and porting. 

In this simple Tour, things have been set up so that all the files of interest, source texts as well as generated ones, will appear in the project directory <code>YOURDIR</code> (either <code>$ISE_EIFFEL\examples\studio\tour</code> or the copy that you have made). Go to that project directory using the Windows explorer or a <code>cd</code> command, and look at its contents (using <code>ls</code> on Unix/Linux): 

[[Image:es gt project directory 01]]

The contents of this <code>YOURDIR</code> directory includes the following: 
* First you see a number of files with the extension <code>.e</code> , for "Eiffel": <code>heir.e </code>, <code> invalid.e </code> and others. These are the Eiffel source files, each containing one class. The recommended convention is to store a class of name <code>CLASS_NAME</code> into a file of name <code>class_name.e </code>, where <code>class_name</code> is the lower-case version of <code>CLASS_NAME</code> ; here, file <code>heir.e</code> contains the class <code>HEIR</code> and so on. As you may remember, Eiffel is case-insensitive, but the standard convention for class names is to write them in all upper case. Calling the file <code>class_name.e</code> is only a recommendation, not an obligation; but you <span>are</span> required to store one class per file. This keeps things simple and facilitates project and configuration management. 
* You also notice a file with an <code>ecf</code> extension. This is the configuration file that specifies this project. As you remember, the ECF file for this example was available as part of the delivery; we used it to compile the project. In most practical cases, however, you won't need to build an ECF; if you use the "Create project" option of EiffelStudio, EiffelStudio will build the ECF for you; if you change the Project Settings during a session, EiffelStudio will update the ECF. ECF files are written in a XML notation. 
* You will notice a subdirectory called <code>EIFGENs</code>, for "<code>EIF</code>''fel'' <code>GEN</code>''eration''<code>s</code>". <code>EIFGENs</code> is created and maintained by the compiler to store information about your project, including generated code for execution. EiffelStudio manages your project in such a way that <code>EIFGENs</code> can always be re-generated if need be; this means in particular that if things go wrong for any reason and you want to make a fresh start you can always delete this directory and recompile your system. This also means that you should not add any files into this directory, or modify any of its files, since a later compilation is free to change or regenerate whatever it chooses in <code>EIFGENs</code>. 
* Because the demonstration system for the Tour is a Microsoft Windows system, there is a file named <code>simple.rc</code> in the folder. This is a Windows resource file that was created automatically by EiffelStudio.

Later on, we will see that EiffelStudio may generate three more subdirectories of the project directory: <code>Diagrams</code>, if you produce graphical system diagrams; <code>Documentation</code>, if you request system documentation, for example HTML; and <code>Metrics</code>, if you perform measurements on your system. Other than these directories, <code>EIFGENs</code> EiffelStudio will not touch anything in the project directory, so you may safely add and change whatever files and subdirectories you like. 

You seldom need to look into <code>EIFGENs</code>, although you should know that it's there. Right now if you check the contents of the project directory <code>YOURDIR</code> (using the Windows Explorer on Windows, the <code>ls</code> command on Unix, or some equivalent mechanism), you will see that <code>EIFGENs</code> has been created, itself with a subdirectory called <code>classic</code> which is the name of the target and which has some subdirectories, including <code>W_Code</code> which contains the generated code ( <code>W</code> for "Workbench" -- we'll see the reason later). Feel free to browse through it if you like, but don't change anything. 

By the way, we are now done with any platform-specific instructions. Everything in the rest of this Tour, other than the graphical look-and-feel, will work the same across all EiffelStudio platforms.

