[[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:
File --> New Project
... 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 YOURDIR
(either $ISE_EIFFEL\examples\studio\tour
or the copy that you have made). Go to that project directory using the Windows explorer or a cd
command, and look at its contents (using ls
on Unix/Linux):
[[Image:es gt project directory 01]]
The contents of this YOURDIR
directory includes the following:
* First you see a number of files with the extension .e
, for "Eiffel": heir.e
, invalid.e
and others. These are the Eiffel source files, each containing one class. The recommended convention is to store a class of name CLASS_NAME
into a file of name class_name.e
, where class_name
is the lower-case version of CLASS_NAME
; here, file heir.e
contains the class HEIR
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 class_name.e
is only a recommendation, not an obligation; but you are required to store one class per file. This keeps things simple and facilitates project and configuration management.
* You also notice a file with an ecf
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 EIFGENs
, for "EIF
''fel'' GEN
''eration''s
". EIFGENs
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 EIFGENs
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 EIFGENs
.
* Because the demonstration system for the Tour is a Microsoft Windows system, there is a file named simple.rc
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: Diagrams
, if you produce graphical system diagrams; Documentation
, if you request system documentation, for example HTML; and Metrics
, if you perform measurements on your system. Other than these directories, EIFGENs
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 EIFGENs
, although you should know that it's there. Right now if you check the contents of the project directory YOURDIR
(using the Windows Explorer on Windows, the ls
command on Unix, or some equivalent mechanism), you will see that EIFGENs
has been created, itself with a subdirectory called classic
which is the name of the target and which has some subdirectories, including W_Code
which contains the generated code ( W
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.