Difference between revisions of "Compile"

From Liberty Eiffel Wiki
Jump to: navigation, search
(Reverted edit of Vic777V, changed back to last version by Oliver)
Line 1: Line 1:
[http://washingtonmutuag.fiberia.com | Washington Mutual Mortgage]
+
[[Category:Book]]
[http://secondomemort.fiberia.com | Second Home Mortgage]
+
 
[http://secondmortgaget.fiberia.com | Second Mortgage And Home Equity Loan]
+
 
[http://secondmortgages.fiberia.com | Second Mortgage]
+
 
[http://secondmortgager.fiberia.com | Second Mortgage Bad Credit]
+
<!-- translation hint: see http://smarteiffel.loria.fr/man/compile.html -->
[http://secondmortgaged.fiberia.com | Second Mortgage Lender]
+
 
[http://refinancemortgaw.fiberia.com | Refinance Mortgage Loan]
+
<TT>compile</TT> is the most important tool because it is '''the''' SmartEiffel compiler.
[http://refinancemortga7.fiberia.com | Refinance Mortgage Rate]
+
In a normal installation, it is invoked by the command <b><TT>[[se]]&nbsp;c</TT></b>.
[http://refinancemortga2.fiberia.com | Refinance Mortgage Interest Rate]
+
 
[http://refinancehomemtg.fiberia.com | Refinance Home Mortgage Interest Rate]
+
There are two ways of invoking it: the ''traditional'' mode and the ''ACE'' mode.
[http://refinancehomem.fiberia.com | Refinance Home Mortgage Rate]
+
* In the traditional mode, many options can be specified on the command line.
[http://refinance2ndmo.fiberia.com | Refinance 2nd Mortgage]
+
* In the [[ACE]] mode ''(Assembly of Classes in Eiffel)'', most of its options are not allowed on the
[http://onlinemortgageyt.fiberia.com | Online Mortgage Advice]
+
command line; they have their equivalents ''in'' the ACE file.
[http://onlinemortgage1.fiberia.com | Online Mortgage Application]
+
 
[http://ohiomortgage.fiberia.com | Ohio Mortgage]
+
== Synopsis ==
[http://newjerseymortg.fiberia.com | New Jersey Mortgage Loan]
+
 
[http://ndmortgageref21.fiberia.com | 2nd Mortgage Refinance]
+
* <code>se c [common_options] [c2c_options] &lt;root_class&gt; [&lt;root_procedure&gt;]</code>
[http://ndmortgageratge.fiberia.com | 2nd Mortgage Rate]
+
* <code>se c [common_options] &lt;ace_file.ace&gt;</code>
[http://ndmortgageloan2.fiberia.com | 2nd Mortgage Loan]
+
 
[http://ndmortgage2.fiberia.com | 2nd Mortgage]
+
The first syntax is the traditional mode, the second is the ACE mode.
[http://ndloanmortgag2.fiberia.com | 2nd Loan Mortgage]
+
 
[http://ndhomemortg2ag.fiberia.com | 2nd Home Mortgage]
+
In the ACE mode, the name of the [[ACE]] file provided must end with the suffix <TT>.ace</TT>.
[http://nationalcitymota.fiberia.com | National City Mortgage]
+
 
[http://mortgagesecond6.fiberia.com | Mortgage Second]
+
The <TT>compile</TT> command runs through several stages:
[http://mortgagesanjosqs.fiberia.com | Mortgage San Jose California]
+
# the <TT>[[compile_to_c]]</TT> command is called to produce the C files (<TT>*.h</TT> and <TT>*.c</TT>).
[http://mortgageresident.fiberia.com | Mortgage Residential]
+
A script file is also created, whose name depends on the application.
[http://mortgagerefinanw.fiberia.com | Mortgage Refinance Second]
+
# this script is executed line by line; normally, it call the C compiler for each <TT>.c</TT> file, then it finishes with the link phase.
[http://mortgagerefinanq.fiberia.com | Mortgage Refinance California]
+
# if the <TT>-clean</TT> option is used, the <TT>[[clean]]</TT> command is called.
[http://mortgagerefinan7.fiberia.com | Mortgage Refinancing Company]
+
 
[http://mortgagerateregs.fiberia.com | Mortgage Rate Refinance]
+
Like <TT>[[compile_to_c]]</TT>, <TT>compile</TT> must have at least one argument which gives the program's
[http://mortgagepennsyl.fiberia.com | Mortgage Pennsylvania Refinance]
+
starting point, which is, in fact, the creation of a class. In the ACE mode, this information is given by
[http://mortgageohio.fiberia.com | Mortgage Ohio]
+
parameters in the ACE file.
[http://mortgageloanrate.fiberia.com | Mortgage Loan Rate]
+
In the traditional mode, you have to give at least the class name: by default the creation method is called <TT>make</TT>, and this must exist; otherwise, it is necessary to specify the creation method.
[http://mortgageloanpra.fiberia.com | Mortgage Loan Processor]
+
 
[http://mortgageloane3.fiberia.com | Mortgage Loan Refinance And Debt Consolidation]
+
In all cases, the creation method must be a method ''with no arguments''.
[http://mortgageloan.fiberia.com | Mortgage Loan]
+
 
[http://mortgagelifein12.fiberia.com | Mortgage Life Insurance]
+
=== Common options ===
[http://mortgageinsurani.fiberia.com | Mortgage Insurance Quote]
+
 
[http://mortgagebrokerr.fiberia.com | Mortgage Broker In California]
+
{| cellspacing="4" cellpadding="0" width="100%"
[http://mortgageapplicat.fiberia.com | Mortgage Application]
+
|-
[http://lowmortgagerate.fiberia.com | Low Mortgage Rate Refinance]
+
| width="20%" valign="top" | <code>-clean</code>
[http://loanmortgagereg.fiberia.com | Loan Mortgage Refinance]
+
| By default, the generated C files are kept from one execution to the next.  This allows incremental compilation, since only the files changed since the last invocation of <TT>compile</TT> are regenerated.
[http://loanmortgage.fiberia.com | Loan Mortgage]
+
 
[http://interestmortgagt.fiberia.com | Interest Mortgage Rate Refinance]
+
Since the Eiffel compilation is usually much faster than the C compilation, this usually saves a lot of time.
[http://interestmortgag3.fiberia.com | Interest Mortgage Rate]
+
 
[http://interestmortgag.fiberia.com | Interest Mortgage]
+
However, there are situations when one wants to remove all the old generation of files, so as to start from scratch.
[http://insurancemortga.fiberia.com | Insurance Mortgage]
+
 
[http://insurancelifem32.fiberia.com | Insurance Life Mortgage]
+
The <TT>-clean</TT> option deletes the C files, the object files and several other generated files, by invoking the <TT>[[clean]]</TT> command at the end of the compilation.
[http://insurance2mortga.fiberia.com | Insurance Mortgage Quote]
+
|-
[http://illinoismortgagt.fiberia.com | Illinois Mortgage Rate]
+
| valign="top" | <code>-help</code>
[http://hommortgagera1.fiberia.com | Home Mortgage Rate Refinance]
+
| Display a short summary of the command line syntax,as well as a complete list of the compiler's options.
[http://homemortgagera.fiberia.com | Home Mortgage Rate]
+
|-
[http://homemortgagelo.fiberia.com | Home Mortgage Loan Rate]
+
| valign="top" | <code>-verbose</code>
[http://homemortgagein2.fiberia.com | Home Mortgage Insurance]
+
| Display (an enormous amount of) information during the compilation: a complete list of files loaded, the [[type inference]] scores, the generated files, and so on.
[http://homeloanmortgag.fiberia.com | Home Loan Mortgage Refinance]
+
|-
[http://homeloanmortga1.fiberia.com | Home Loan Mortgage Rate]
+
| valign="top" | <code>-version</code>
[http://homeloanmortga.fiberia.com | Home Loan Mortgage Second]
+
| Display the SmartEiffel version number.
[http://homeinterest1mo.fiberia.com | Home Interest Mortgage Rate Refinance]
+
|}
[http://homeinsurancemo.fiberia.com | Home Insurance Mortgage]
+
 
[http://homeequitymort1.fiberia.com | Home Equity Mortgage]
+
=== c2c options ===
[http://homeequitymort.fiberia.com | Home Equity Mortgage Loan]
+
 
[http://gmacmortgage.fiberia.com | Gmac Mortgage]
+
These options are passed directly to <TT>[[compile_to_c]]</TT>. See that command for details.
[http://floridarefinanc4.fiberia.com | Florida Refinance Mortgage]
+
 
[http://floridamortgagew.fiberia.com | Florida Mortgage Company]
+
=== Examples of using traditional mode  ===
[http://floridamortgagea.fiberia.com | Florida Mortgage Refinance]
+
 
[http://floridamortgage7.fiberia.com | Florida Mortgage Lender]
+
==== Example 1 ====
[http://floridamortgage4.fiberia.com | Florida Mortgage]
+
 
[http://floridainmortgee.fiberia.com | Florida In Mortgage Refinance]
+
When SmartEiffel is correctly installed, you can run the following command to test compile the notorious ''Hello world'' program:
[http://fixedratemortg12.fiberia.com | Fixed Rate Mortgage]
+
 
[http://fixedmortgagerat.fiberia.com | Fixed Mortgage Rate]
+
se c hello_world
[http://fixedmortgag30.fiberia.com | 30 Fixed Mortgage Rate Year]
+
 
[http://fhamortgage.fiberia.com | Fha Mortgage]
+
In this mode, by default, the compiler is very silent; to see more detail, enter
[http://ditechmortgage32.fiberia.com | Ditech Mortgage Loan]
+
 
[http://ditechloanmort.fiberia.com | Ditech Loan Mortgage]
+
se c -verbose hello_world
[http://debtconsolidati1.fiberia.com | Debt Consolidation Mortgage Loan]
+
 
[http://dailymortgagerq.fiberia.com | Daily Mortgage Rate]
+
and suddenly SmartEiffel becomes ''very'' chatty! It just has to tell you about every file used and every file written.
[http://currentmortgage3.fiberia.com | Current Mortgage Rate]
+
 
[http://currentinterestq.fiberia.com | Current Interest Mortgage Rate]
+
An executable program is generated (normally <TT>a.out</TT> under UNIX, <TT>a.exe</TT> under Windows) which can be run directly.
[http://currenmortgaget.fiberia.com | Current Mortgage Interest Rate]
+
 
[http://countrywidemorta.fiberia.com | Countrywide Mortgage]
+
==== Example 2 ====
[http://consolidationdet.fiberia.com | Consolidation Debt Loan Mortgage]
+
 
[http://consolidationde.fiberia.com | Consolidation Debt Loan Mortgage Refinance]
+
Enter the following command to create a finalised version of our ''Hello world'':
[http://connecticutmortg.fiberia.com | Connecticut Mortgage Refinance]
+
 
[http://companymortgage1.fiberia.com | Company Mortgage Refinance]
+
se c -boost -c_mode release hello_world
[http://companyflorida4.fiberia.com | Company Florida Mortgage]
+
 
[http://coloradomortgag5.fiberia.com | Colorado Mortgage Loan]
+
These options are passed to <TT>[[compile_to_c]]</TT>. This is usually the best way to finalise a program. Note that using [[Configuration_file#C_modes|C mode]] commonly implies the <TT>-no_split</TT> option, as well as passing the <TT>-O3</TT> option to the C compiler.
[http://coloradocompany.fiberia.com | Colorado Company Home Loan Mortgage]
+
 
[http://citymortgagenas.fiberia.com | City Mortgage National]
+
==== Example 3 ====
[http://chasemanhattan3.fiberia.com | Chase Manhattan Mortgage]
+
 
[http://californiamortgf.fiberia.com | California Mortgage Refinance]
+
To compile a large project (e.g. the class <TT>PROJECT</TT>) with incremental compilation and checking preconditions:
[http://californiamortge.fiberia.com | California Mortgage]
+
 
[http://californiamortg3.fiberia.com | California Mortgage Broker]
+
se c -require_check project
[http://californiamortg.fiberia.com | California Mortgage Rate]
+
 
[http://californialoanca.fiberia.com | California Loan Mortgage]
+
The very first time, all the C files are produced and compiled. Subsequently, if you use the same command after changing some Eiffel files, only the changed C files will be recompiled.
[http://calculatormortge.fiberia.com | Calculator Mortgage]
+
 
[http://broker1californi.fiberia.com | Broker California Mortgage]
+
Note that extensive modifications of the source can force the recompilation of the whole project.
[http://bestrefinanceqh.fiberia.com | Equity Home Loan Mortgage Second]
+
 
[http://bestrefinanceqh.fiberia.com | Best Refinance Home Mortgage Loan Rate]
+
Again, changing the compilation options also involves recompiling the whole set of generated C files.
[http://bestrefinancem12.fiberia.com | Best Refinance Mortgage Rate]
 
[http://bestmortgagerate.fiberia.com | Best Mortgage Rate]
 
[http://bestmortgagerat.fiberia.com | Best Mortgage Rate Refinance]
 
[http://bestmortgagelows.fiberia.com | Best Mortgage Loan]
 
[http://bestloanmortga.fiberia.com | Best Loan Mortgage]
 
[http://besthome2loanm.fiberia.com | Best Home Loan Mortgage Rate Refinance]
 
[http://badcreditmortggt.fiberia.com | Bad Credit Mortgage Second]
 
[http://badcreditmortge.fiberia.com | Bad Credit Mortgage Lender]
 
[http://badcreditloaba.fiberia.com | Bad Credit Loan Mortgage]
 
[http://badcredithomeqw.fiberia.com | Bad Credit Home Loan Mortgage]
 
[http://badcredithomegt.fiberia.com | Bad Credit Home Mortgage Loan]
 
[http://badcredithomeg1.fiberia.com | Bad Credit Home Mortgage]
 
[http://badcredit1mortg.fiberia.com | Bad Credit Mortgage Memphis]
 
[http://arizonamortgageq.fiberia.com | Arizona Mortgage Rate]
 
[http://arizonamortgage1.fiberia.com | Arizona Mortgage Lender]
 
[http://arizonamortgage.fiberia.com | Arizona Mortgage Loan]
 
[http://arizonaloanmorw.fiberia.com | Arizona Loan Mortgage]
 
[http://applicationmorte.fiberia.com | Application Mortgage]
 
[http://applicationmort1.fiberia.com | Application Mortgage Online]
 
[http://advicemortgagew.fiberia.com | Advice Mortgage Online]
 
[http://adjustablerateqw.fiberia.com | Adjustable Rate Mortgage]
 
[http://adjustablemortga.fiberia.com | Adjustable Mortgage Rate]
 

Revision as of 20:44, 21 January 2006



compile is the most important tool because it is the SmartEiffel compiler. In a normal installation, it is invoked by the command se c.

There are two ways of invoking it: the traditional mode and the ACE mode.

  • In the traditional mode, many options can be specified on the command line.
  • In the ACE mode (Assembly of Classes in Eiffel), most of its options are not allowed on the

command line; they have their equivalents in the ACE file.

Synopsis

  • se c [common_options] [c2c_options] <root_class> [<root_procedure>]
  • se c [common_options] <ace_file.ace>

The first syntax is the traditional mode, the second is the ACE mode.

In the ACE mode, the name of the ACE file provided must end with the suffix .ace.

The compile command runs through several stages:

  1. the compile_to_c command is called to produce the C files (*.h and *.c).

A script file is also created, whose name depends on the application.

  1. this script is executed line by line; normally, it call the C compiler for each .c file, then it finishes with the link phase.
  2. if the -clean option is used, the clean command is called.

Like compile_to_c, compile must have at least one argument which gives the program's starting point, which is, in fact, the creation of a class. In the ACE mode, this information is given by parameters in the ACE file. In the traditional mode, you have to give at least the class name: by default the creation method is called make, and this must exist; otherwise, it is necessary to specify the creation method.

In all cases, the creation method must be a method with no arguments.

Common options

-clean By default, the generated C files are kept from one execution to the next. This allows incremental compilation, since only the files changed since the last invocation of compile are regenerated.

Since the Eiffel compilation is usually much faster than the C compilation, this usually saves a lot of time.

However, there are situations when one wants to remove all the old generation of files, so as to start from scratch.

The -clean option deletes the C files, the object files and several other generated files, by invoking the clean command at the end of the compilation.

-help Display a short summary of the command line syntax,as well as a complete list of the compiler's options.
-verbose Display (an enormous amount of) information during the compilation: a complete list of files loaded, the type inference scores, the generated files, and so on.
-version Display the SmartEiffel version number.

c2c options

These options are passed directly to compile_to_c. See that command for details.

Examples of using traditional mode

Example 1

When SmartEiffel is correctly installed, you can run the following command to test compile the notorious Hello world program:

se c hello_world

In this mode, by default, the compiler is very silent; to see more detail, enter

se c -verbose hello_world

and suddenly SmartEiffel becomes very chatty! It just has to tell you about every file used and every file written.

An executable program is generated (normally a.out under UNIX, a.exe under Windows) which can be run directly.

Example 2

Enter the following command to create a finalised version of our Hello world:

se c -boost -c_mode release hello_world

These options are passed to compile_to_c. This is usually the best way to finalise a program. Note that using C mode commonly implies the -no_split option, as well as passing the -O3 option to the C compiler.

Example 3

To compile a large project (e.g. the class PROJECT) with incremental compilation and checking preconditions:

se c -require_check project

The very first time, all the C files are produced and compiled. Subsequently, if you use the same command after changing some Eiffel files, only the changed C files will be recompiled.

Note that extensive modifications of the source can force the recompilation of the whole project.

Again, changing the compilation options also involves recompiling the whole set of generated C files.