Bienvenue sur le wiki de Nuit debout, nous sommes le 3004 mars.




Villes/Montluçon/sciences/Turbo Pascal/utilitaires : Différence entre versions

De NuitDebout
Aller à : navigation, rechercher
(Page créée avec « ======================================================================= Turbo Pascal Utilities =====================================================... »)
 
(Règles explicites)
 
(18 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
=======================================================================
+
Ce fichier décrit cinq programmes autonomes utilitaires qui viennent avec Turbo Pascal: TPUMOVER, MAKE, TOUCH, GREP et BINOBJ.
                      Turbo Pascal Utilities
+
=======================================================================
+
  
-----------------------------------------------------------------------
+
==Utilisation de TPUMOVER==
                        Table of Contents
+
-----------------------------------------------------------------------
+
1. Using TPUMOVER, the unit mover
+
    A review of unit files
+
    Using TPUMOVER
+
2. The Stand-Alone MAKE Utility
+
    Creating makefiles
+
      Comments
+
      Explicit rules
+
      Implicit rules
+
      Command lists
+
      Macros
+
      Defined test macro ($d)
+
      Base file name macro ($*)
+
      Full file name macro ($<)
+
      File name path macro ($:)
+
      File name and extension macro ($.)
+
      File name only macro ($&)
+
      Directives
+
    Using MAKE
+
      The BUILTINS.MAK file
+
      How MAKE searches for files
+
      MAKE command-line options
+
      MAKE error messages
+
      Fatal errors
+
      Errors
+
3. The TOUCH utility
+
4. The GREP utility
+
    The GREP switches
+
    How to search using GREP
+
    Examples using GREP
+
5. The BINOBJ utility
+
-----------------------------------------------------------------------
+
  
This file describes five stand-alone utility programs that come with
+
Lorsque vous écrivez des unités, vous voulez les rendre facilement accessibles à tous les programmes que vous développez. (Mystères de chapitre, "Unités et Mystères connexes», explique ce qu'est une unité est et raconte comment créer vos propres unités.) Nous allons maintenant vous montrer comment utiliser TPUMOVER pour éliminer les unités rarement utilisées de TURBO.TPL, et comment insérer des unités souvent utilisées dans TURBO.TPL.
Turbo Pascal: TPUMOVER, MAKE, TOUCH, GREP, and BINOBJ.
+
  
===================================
 
1. Using TPUMOVER, the Unit Mover
 
===================================
 
  
When you write units, you want to make them easily available to any
+
  Un examen des dossiers Unité
programs that you develop. (Chapter mysteries, "Units and Related
+
Mysteries," explains what a unit is and tells how to create your own
+
units.) We'll now show you how to use TPUMOVER to remove seldom-used units
+
from TURBO.TPL, and how to insert often-used units into TURBO.TPL.
+
  
 +
Il existe deux types de fichiers de l'unité: les fichiers .TPU et fichiers .TPL. Lorsque vous compilez une unité, Turbo Pascal met le code objet résultant dans un fichier .TPU (Turbo Pascal Unit), qui contient toujours une unité exactement.
  
A Review of Unit Files
+
A .TPL (Turbo Pascal Library) fichier, d'autre part, peut contenir plusieurs unités. Par exemple, toutes les unités qui viennent sur votre disque Turbo Pascal sont dans le fichier TURBO.TPL. Le TURBO.TPL de fichier est actuellement le seul fichier de bibliothèque Turbo Pascal va charger des unités de.
========================
+
  
There are two types of unit files: .TPU files and .TPL files. When you
+
Vous avez peut-être remarqué, cependant, que vous pouvez utiliser les unités standard Turbo Pascal sans donner un nom de fichier. En effet, ces unités sont stockées dans le fichier de l'unité standard Turbo Pascal - TURBO.TPL sur votre disque de distribution. Parce que les unités sont dans ce fichier, tout programme peut les utiliser sans «connaître» leur emplacement.
compile a unit, Turbo Pascal puts the resulting object code in a .TPU
+
(Turbo Pascal Unit) file, which always contains exactly one unit.
+
  
A .TPL (Turbo Pascal Library) file, on the other hand, can contain multiple
+
Supposons que vous ayez une unité appelée TOOLS.TPU, et vous l'utiliser dans de nombreux programmes différents. Bien que l'ajout d'outils pour TURBO.TPL prend mémoire (TURBO.TPL est automatiquement chargé en mémoire par le compilateur), l'ajouter à la bibliothèque résidente rend "en utilisant" Outils plus vite parce que l'unité est en mémoire plutôt que sur le disque.
units. For example, all the units that come on your Turbo Pascal disk are
+
in the file TURBO.TPL. The file TURBO.TPL is currently the only library
+
file Turbo Pascal will load units from.
+
  
You may have noticed, though, that you can use the standard Turbo Pascal
+
Il y a cinq unités standard déjà contenues dans TURBO.TPL: System, Overlay, Printer, Crt, et Dos.
units without giving a file name. That's because these units are stored in
+
the Turbo Pascal standard unit file--TURBO.TPL on your distribution disk.
+
Because the units are in that file, any program can use them without
+
"knowing" their location.
+
  
Suppose you have a unit called TOOLS.TPU, and you use it in many different
+
===Utilisation de TPUMOVER===
programs. Though adding Tools to TURBO.TPL takes up memory (TURBO.TPL is
+
automatically loaded into memory by the compiler), adding it to the
+
resident library makes "using" Tools faster because the unit is in memory
+
instead of on disk.
+
  
There are five standard units already in TURBO.TPL: System, Overlay,
+
Vous pouvez utiliser plusieurs paramètres de ligne de commande qui vous permettent de manipuler les unités rapidement. La syntaxe de ces paramètres est
Printer, Crt, and Dos.
+
  
 +
  opérations de nom de fichier TPUMOVER
  
Using TPUMOVER
+
où le nom de fichier est un fichier de .TPU ou un fichier .TPL, et opérations est une liste facultative d'un ou plusieurs des éléments suivants :
================
+
  
You can use several command-line parameters that let you manipulate units
+
  + Unitname Ajouter une unité à la bibliothèque.
quickly. The syntax for these parameters is
+
  - unitname Supprimer une unité de la bibliothèque.
 +
  * Unitname Extrait d'une unité de la bibliothèque.
  
  TPUMOVER filename operations
+
Si aucune opération sont spécifiées, TPUMOVER répertorie les unités dans le fichier de la bibliothèque ainsi que la taille et la dépendance des informations.
  
where filename is either a .TPU file or a .TPL file,
+
==L'utilitaire MAKE==
      and operations is an optional list of one or more of the following
+
      commands:
+
  
        +unitname    Add a unit to the library.
+
===Contenu des Makefiles===
        -unitname    Delete a unit from the library.
+
        *unitname    Extract a unit from the library.
+
  
If no operations are specified, TPUMOVER lists the units in the library
+
Un makefile contient les définitions et les relations nécessaires pour aider à faire garder votre programme (s) à jour. Vous pouvez créer autant de makefiles que vous le souhaitez et les nommer ce que vous voulez. Si vous ne spécifiez pas de makefile lorsque vous exécutez MAKE (en utilisant l'option -f), puis MAKE recherche d'un fichier avec le nom par défaut MAKEFILE.
file along with size and dependency information.
+
  
 +
Vous créez un makefile avec un éditeur de texte ASCII, comme éditeur interactif intégré de Turbo Pascal. Toutes les règles, les définitions et directives se terminent par un retour chariot; si une ligne est trop longue, vous pouvez continuer à la ligne suivante en plaçant une barre oblique inverse (\) comme le dernier caractère de la ligne.
  
=================================
+
Whitespace - espaces et tabulations - est utilisé pour séparer les identificateurs adjacents (comme les dépendances) et aux commandes en retrait dans une règle.
2. The Stand-Alone MAKE Utility
+
=================================
+
  
This section contains complete documentation for creating makefiles and
+
Création d'un makefile est presque comme l'écriture d'un programme - avec des définitions, des commandes et des directives.
using MAKE.
+
  
 +
===commentaires===
  
Creating Makefiles
+
Les commentaires commencent par un signe dièse (#); le reste de la ligne qui suit le # est ignorée par MAKE. Les commentaires peuvent être placés partout et n'ont pas à commencer dans une colonne particulière.
====================
+
  
A makefile contains the definitions and relationships needed to help MAKE
+
===Règles explicites===
keep your program(s) up to date. You can create as many makefiles as you
+
want and name them whatever you want. If you don't specify a makefile when
+
you run MAKE (using the -f option), then MAKE looks for a file with the
+
default name MAKEFILE.
+
  
You create a makefile with any ASCII text editor, such as Turbo Pascal's
+
Les règles explicites prennent la forme
built-in interactive editor. All rules, definitions, and directives end
+
with a carriage return; if a line is too long, you can continue it to the
+
next line by placing a backslash (\) as the last character on the line.
+
  
Whitespace--spaces and tabs--is used to separate adjacent identifiers (such
+
  cible [cible ...]: [source source ...]
as dependencies) and to indent commands within a rule.
+
      [commande]
 +
      [commande]
 +
      ...
  
Creating a makefile is almost like writing a program--with definitions,
+
où la cible est le fichier à être mis à jour, la source est un fichier dont la cible dépend, et la commande est une commande valide MS-DOS (y compris l'invocation de fichiers .BAT et l'exécution des .COM et fichiers .EXE).
commands, and directives.  
+
  
Comments
+
Des règles explicites définissent un ou plusieurs noms de cibles, zéro ou plusieurs fichiers source, et une liste facultative de commandes à exécuter. Les noms de cible et de fichiers source répertoriés dans des règles explicites peuvent contenir des disques et des répertoires spécifications MS-DOS normales, mais ils ne peuvent pas contenir des caractères génériques.
----------
+
  
Comments begin with a number sign (#); the rest of the line following the #
+
====Syntaxe====
is ignored by MAKE. Comments can be placed anywhere and never have to start
+
in a particular column.
+
  
 +
ici est important. cible doit être au début d'une ligne (colonne 1), et chaque commande doit être en retrait (précédé d'au moins un caractère d'espace ou une tabulation). Comme mentionné précédemment, la barre oblique inverse (\) peut être utilisé comme un caractère de continuation si la liste des fichiers source ou une commande donnée est trop long pour une seule ligne. Enfin, aussi bien les fichiers source et les commandes sont facultatives; il est possible d'avoir une règle explicite consistant seulement
  
Explicit Rules
+
  cible [cible ...] suivi par deux points.
----------------
+
  
Explicit rules take the form
+
L'idée derrière une règle explicite est que la ou les commandes énumérées vont créer ou mettre à jour la cible, en utilisant habituellement les fichiers source. Lorsque MAKE rencontre une règle explicite, il vérifie d'abord pour voir si l'un des fichiers source sont des fichiers cibles ailleurs dans le makefile. Si oui, ces règles sont évaluées en premier.
  
  target [target ... ]: [source source ... ]
+
Une fois que tous les fichiers source ont été créés ou mis à jour sur la base d'autres règles explicites (ou implicites), effectuer des contrôles pour voir si la cible existe. Sinon, chaque commande est invoquée dans l'ordre donné. Si existe cible, son heure et la date de la dernière modification sont comparées à l'heure et la date de chaque source. Si une source a été modifié plus récemment que la cible, la liste des commandes est exécutée.
      [command]
+
      [command]
+
      ...
+
  
where target is the file to be updated, source is a file upon which target
+
Un nom de fichier donné peut se produire sur le côté gauche d'une règle explicite qu'une seule fois dans une exécution donnée de MAKE.
depends, and command is any valid MS-DOS command (including invocation of
+
.BAT files and execution of .COM and .EXE files).
+
  
Explicit rules define one or more target names, zero or more source files,
+
Chaque ligne de commande dans une règle explicite commence par des espaces. FAIS considère toutes les lignes suivantes une règle explicite pour faire partie de la liste de commandes pour cette règle, jusqu'à la ligne suivante qui commence dans la colonne 1 (sans aucun espace précédent) ou jusqu'à la fin du fichier. Les lignes vides sont ignorées.
and an optional list of commands to be performed. Target and source file
+
names listed in explicit rules can contain normal MS-DOS drive and
+
directory specifications, but they cannot contain wildcards.
+
  
Syntax here is important. target must be at the start of a line (in column
+
Une règle explicite, sans lignes de commande suivante, il est traité un peu différemment d'une règle explicite avec les lignes de commande.
1), and each command must be indented (preceded by at least one space
+
character or tab). As mentioned before, the backslash (\) can be used as a
+
continuation character if the list of source files or a given command is
+
too long for one line. Finally, both the source files and the commands are
+
optional; it is possible to have an explicit rule consisting only of
+
  
  target [target ...] followed by a colon.
+
* Si une règle explicite existe pour une cible avec des commandes, les seuls fichiers que la cible dépend sont ceux énumérés dans la règle explicite.
  
The idea behind an explicit rule is that the command or commands listed
+
* Si une règle explicite n'a pas les commandes, les objectifs dépendent des fichiers données dans la règle explicite, et ils dépendent également de tout fichier correspond à une règle implicite pour la cible.
will create or update target, usually using the source files. When MAKE
+
encounters an explicit rule, it first checks to see if any of the source
+
files are target files elsewhere in the makefile. If so, those rules are
+
evaluated first.
+
  
Once all the source files have been created or updated based on other
+
Voici quelques exemples de règles explicites d'un makefile:
explicit (or implicit) rules, MAKE checks to see if target exists. If not,
+
each command is invoked in the order given. If target does exist, its time
+
and date of last modification are compared against the time and date for
+
each source. If any source has been modified more recently than target, the
+
list of commands is executed.
+
  
A given file name can occur on the left side of an explicit rule only once
+
  myutil.obj: myutil.asm
in a given execution of MAKE.
+
    tasm myutil.asm, myutil.obj;
  
Each command line in an explicit rule begins with whitespace. MAKE
+
  myapp.exe: myapp.pas myglobal.tpu myutils.tpu
considers all lines following an explicit rule to be part of the command
+
    tpc myapp / Tc: \ TP5 \ bin
list for that rule, up to the next line that begins in column 1 (without
+
any preceding whitespace) or up to the end of the file. Blank lines are
+
ignored.
+
  
An explicit rule, with no command lines following it, is treated a little
+
*La première règle explicite indique que MYUTIL.OBJ dépend MYUTIL.ASM, et que MYUTIL.OBJ est créé en exécutant la donnée commande TASM.
differently than an explicit rule with command lines.
+
  
  o If an explicit rule exists for a target with commands, the only files
+
* La deuxième règle stipule que MYAPP.EXE dépend MYAPP.PAS, MYGLOBAL.TPU et MYUTILS.TPU, et est créé par le TPC donné commander. (Le / T plus chemin nom dans ces exemples sera expliquée dans la suite)
    that the target depends on are the ones listed in the explicit rule.
+
  
  o If an explicit rule has no commands, the targets depend on the files
+
Si vous réorganisez les règles afin que celui pour MYAPP.EXE vient en premier, suivi par les autres, make recompiler (ou réassembler) uniquement les fichiers qu'il doit afin de mettre à jour tout correctement. En effet, un MAKE sans cible sur la ligne de commande essaiera d'exécuter la première règle explicite qu'il trouve dans le makefile.
    given in the explicit rule, and they also depend on any file that
+
    matches an implicit rule for the target(s).
+
  
Here are some examples of explicit rules from a makefile:
+
===Règles implicites===
  
  myutil.obj: myutil.asm
+
Assurez-vous également vous permet de définir des règles implicites, qui sont des généralisations des règles explicites. Voici un exemple pour illustrer la relation entre les deux types. Considérez cette règle explicite du programme exemple précédent:
    tasm myutil.asm,myutil.obj;
+
  
  myapp.exe: myapp.pas myglobal.tpu myutils.tpu
+
  myutil.obj: myutil.asm
    tpc myapp /Tc:\tp5\bin
+
    tasm myutil.asm, myutil.obj;
  
  o The first explicit rule states that MYUTIL.OBJ depends upon
+
Cette règle est une commune, parce qu'il suit un principe général: Un fichier .OBJ dépend du fichier .ASM avec le même nom de fichier et est créé en exécutant TASM (Turbo Assember). En fait, vous pourriez avoir un makefile où vous avez plusieurs (ou même plusieurs dizaines) explicite les règles suivant ce même format.
    MYUTIL.ASM, and that MYUTIL.OBJ is created by executing the given
+
    TASM command.
+
  
  o The second rule states that MYAPP.EXE depends upon MYAPP.PAS,
+
En redéfinissant la règle explicite une règle implicite, vous pouvez éliminer toutes les règles explicites de la même forme. Comme une règle implicite, il ressemblerait à ceci:
    MYGLOBAL.TPU, and MYUTILS.TPU, and is created by the given TPC
+
    command. (The /T plus path name in these examples will be explained
+
    later.)
+
  
If you reorder the rules so that the one for MYAPP.EXE comes first,
+
  .asm.obj:
followed by the others, MAKE will recompile (or reassemble) only the files
+
    tasm $ * EAM, de $ * obj..;
that it has to in order to update everything correctly. This is because a
+
MAKE with no target on the command line will try to execute the first
+
explicit rule it finds in the makefile.
+
  
 +
Cette règle signifie, "tout fichier se terminant par .OBJ dépend du fichier du même nom qui se termine dans .ASM, et le fichier .OBJ est créé en utilisant la commande
  
Implicit Rules
+
  tasm $ *. asm, $ *. obj
----------------
+
  
MAKE also allows you to define implicit rules, which are generalizations of
+
où $ * représente le nom du fichier sans extension. "(Le symbole $ * est une macro spéciale et est discuté dans la section suivante.)
explicit rules. Here's an example to illustrate the relationship between
+
the two types. Consider this explicit rule from the previous sample
+
program:
+
  
  myutil.obj: myutil.asm
+
La syntaxe d'une règle implicite suivante:
    tasm myutil.asm,myutil.obj;
+
  
This rule is a common one, because it follows a general principle: An .OBJ
+
  .source_extension.target_extension:
file is dependent on the .ASM file with the same file name and is created
+
    {commander}
by executing TASM (Turbo Assember). In fact, you might have a makefile
+
    {commander}
where you have several (or even several dozen) explicit rules following
+
    ...
this same format.
+
 
+
By redefining the explicit rule as an implicit rule, you can eliminate all
+
the explicit rules of the same form. As an implicit rule, it would look
+
like this:
+
  
  .asm.obj:
+
Notez que les commandes sont facultatives et doivent être en retrait. Le source_extension (qui doit commencer en colonne 1) est l'extension du fichier source, qui est, il applique à tout fichier ayant le format
    tasm $*.asm,$*.obj;
+
  
This rule means, "any file ending with .OBJ depends on the file with the
+
  fname.source_extension
same name that ends in .ASM, and the .OBJ file is created using the command
+
  
  tasm $*.asm,$*.obj
+
De même, le target_extension se réfère au fichier
  
where $* represents the file's name with no extension." (The symbol $* is a
+
  fname.target_extension
special macro and is discussed in the next section.)
+
  
The syntax for an implicit rule follows:
+
où fname est le même pour les deux fichiers. En d'autres termes, cette règle implicite remplace toutes les règles explicites ayant le format
  
  .source_extension.target_extension:
+
  fname.target_extension: fname.source_extension
     {command}
+
     [commander]
     {command}
+
     [commander]
 
     ...
 
     ...
  
Note the commands are optional and must be indented. The source_extension
+
pour tout fname.
(which must begin in column 1) is the extension of the source file, that
+
is, it applies to any file having the format
+
  
  fname.source_extension
+
Les règles implicites sont utilisées si aucune règle explicite pour une cible donnée peut être trouvée ou si une règle explicite avec aucune commande existe pour la cible.
  
Likewise, the target_extension refers to the the file
+
L'extension du nom de fichier en question est utilisé pour déterminer quelle règle implicite à utiliser. La règle implicite est appliquée si un fichier est trouvé avec le même nom que la cible, mais avec l'extension de la source mentionnée. Par exemple, supposons que vous avez eu un makefile (nommé Makefile) dont le contenu était
  
  fname.target_extension
+
  .asm.obj:
 +
    tasm $ * EAM, de $ * obj..;
  
where fname is the same for both files. In other words, this implicit rule
+
Si vous aviez une routine de langage assembleur nommé RATIO.ASM que vous vouliez compiler pour RATIO.OBJ, vous pouvez utiliser la commande
replaces all explicit rules having the format
+
  
  fname.target_extension:fname.source_extension
+
  faire ratio.obj
    [command]
+
    [command]
+
    ...
+
  
for any fname.
+
FAIRE prendrait RATIO.OBJ être la cible et créer en exécutant la commande:
  
Implicit rules are used if no explicit rule for a given target can be found
+
  tasm ratio.asm, ratio.obj;
or if an explicit rule with no commands exists for the target.
+
  
The extension of the file name in question is used to determine which
+
Les règles implicites sont également utilisés si une règle explicite est donnée à aucune commande. Supposons, comme mentionné précédemment, vous aviez la règle implicite suivante au début de votre makefile:
implicit rule to use. The implicit rule is applied if a file is found with
+
the same name as the target, but with the mentioned source extension. For
+
example, suppose you had a makefile (named MAKEFILE) whose contents were
+
  
  .asm.obj:
+
  .pas.tpu:
     tasm $*.asm,$*.obj;
+
     tpc $ <
  
If you had an assembly language routine named RATIO.ASM that you wanted to
+
Vous pouvez ensuite réécrire certaines règles explicites comme suit:
compile to RATIO.OBJ, you could use the command
+
  
   make ratio.obj
+
  myglobal.tpu: myglobal.pas
 +
   myutils.tpu: myutils.pas myglobal.tpu myutil.obj
  
MAKE would take RATIO.OBJ to be the target and create it by executing the
+
Puisque vous ne disposez pas d'informations explicites sur la façon de créer ces fichiers .TPU, MAKE applique la règle implicite définie précédemment.
command:
+
  
  tasm ratio.asm,ratio.obj;
+
Plusieurs règles implicites peuvent être écrites avec la même extension de cible, mais une seule telle règle peut demander à la fois. Si plus d'une règle implicite existe pour une extension de cible donnée, chaque règle est vérifiée dans l'ordre les règles apparaissent dans le makefile, jusqu'à ce que toutes les règles applicables sont vérifiées.
  
Implicit rules are also used if an explicit rule is given with no commands.
+
MAKE utilise la première règle implicite qu'il découvre un fichier avec l'extension de la source. Même si les commandes de cette règle échouent, des règles plus implicites sont vérifiées.
Suppose, as mentioned before, you had the following implicit rule at the
+
start of your makefile:
+
  
  .pas.tpu:
+
Toutes les lignes suivantes une règle implicite sont considérés comme faisant partie de la liste de commande pour la règle, jusqu'à la ligne suivante qui commence sans espace ou à la fin du fichier. Les lignes vides sont ignorées. La syntaxe d'une ligne de commande est fournie plus loin dans cette annexe.
    tpc $<
+
  
You could then rewrite some explicit rules as follows:
+
MAKE ne connaît pas le nom complet du fichier avec une règle implicite, comme il le fait avec des règles explicites. Pour cette raison, les macros spéciales sont fournies avec MAKE qui vous permettent d'inclure le nom du fichier en cours de construction par la règle.
  
  myglobal.tpu: myglobal.pas
 
  myutils.tpu: myutils.pas myglobal.tpu myutil.obj
 
  
Since you don't have explicit information on how to create these .TPU
+
  Listes de commandes
files, MAKE applies the implicit rule defined earlier.
+
  
Several implicit rules can be written with the same target extension, but
+
Les commandes dans une liste de commandes doivent être en retrait - qui est, précédée d'au moins un caractère ou un onglet d'espace - et prendre la forme
only one such rule can apply at a time. If more than one implicit rule
+
exists for a given target extension, each rule is checked in the order the
+
rules appear in the makefile, until all applicable rules are checked.
+
  
MAKE uses the first implicit rule that it discovers for a file with the
+
  [Prefix ...] command_body
source extension. Even if the commands of that rule fail, no more implicit
+
rules are checked.
+
  
All lines following an implicit rule are considered to be part of the
+
Chaque ligne de commande dans une liste de commande se compose d'un (facultatif) liste des préfixes, suivi d'un corps de commandement unique.
command list for the rule, up to the next line that begins without
+
whitespace or to the end of the file. Blank lines are ignored. The syntax
+
for a command line is provided later in this appendix.
+
  
MAKE does not know the full file name with an implicit rule, as it does
+
Les préfixes autorisés dans une commande modifient le traitement de ces commandes par MAKE. Le préfixe est soit le au (@) signe ou un trait d'union (-) immédiatement suivi par un certain nombre.
with explicit rules. For that reason, special macros are provided with MAKE
+
that allow you to include the name of the file being built by the rule.
+
  
 +
  @ Maintient MAKE d'afficher la commande avant de l'exécuter.  le
 +
      affichage est caché, même si l'option -s n'a pas été donnée sur la MAKE
 +
      ligne de commande.  Ce préfixe applique uniquement à la commande sur laquelle elle
 +
      apparaît.
  
  Command Lists
+
  -num affecte la façon dont les codes traite de sortie FAIS. Si un certain nombre (num) est
---------------
+
          fourni, puis faire sera interrompre le traitement que si l'état de sortie
 +
          dépasse le nombre donné.  Dans cet exemple, MAKE annulerait seulement
 +
          si l'état de sortie est supérieure à 4:
  
Commands in a command list must be indented--that is, preceded by at least
+
  -4 Myprog sample.x
one space character or tab--and take the form
+
  
  [ prefix ... ] command_body
+
  Si aucun préfixe -num est donnée, MAKE vérifie l'état de sortie pour le
 +
          commander. Si le statut est différent de zéro, MAKE va arrêter et supprimer le
 +
          fichier cible en cours.
  
Each command line in a command list consists of an (optional) list of
+
  - Avec un trait d'union, mais pas de numéro, MAKE ne sera pas vérifier l'état de sortie
prefixes, followed by a single command body.
+
      tout.  Indépendamment de ce que l'état de sortie était, MAKE continuera.
  
The prefixes allowed in a command modify the treatment of these commands by
+
Le corps de la commande est traitée exactement comme si elle était entrée comme une ligne à COMMAND.COM, à l'exception que la redirection et les tuyaux ne sont pas pris en charge. MAKE exécute les commandes intégrées suivantes en invoquant une copie de COMMAND.COM pour les exécuter:
MAKE. The prefix is either the at (@) sign or a hyphen (-) followed
+
immediately by a number.
+
  
  @   Keeps MAKE from displaying the command before executing it. The
+
   BREAK CD CHDIR CLS COPY
      display is hidden even if the -s option was not given on the MAKE
+
  MD MKDIR PATH PROMPT REN
      command line. This prefix applies only to the command on which it
+
  RENAME SET TIME TYPE VER
      appears.
+
  VÉRIFIER VOL
  
  -num  Affects how MAKE treats exit codes. If a number (num) is
+
MAKE recherche pour tout autre nom de commande en utilisant l'algorithme de recherche MS-DOS:
          provided, then MAKE will abort processing only if the exit status
+
          exceeds the number given. In this example, MAKE will abort only
+
          if the exit status exceeds 4:
+
  
            -4 myprog sample.x
+
  o Le répertoire courant est recherché en premier, suivi par chaque répertoire
 +
    dans le chemin.
  
          If no -num prefix is given, MAKE checks the exit status for the
+
  o Dans chaque répertoire, d'abord un fichier avec l'extension .COM est cochée,
          command. If the status is nonzero, MAKE will stop and delete the
+
    puis un fichier .exe, et enfin un .BAT.
          current target file.
+
  
  -   With a hyphen but no number, MAKE will not check the exit status at
+
   o Si un fichier .BAT se trouve, une copie de COMMAND.COM est invoqué pour exécuter
      all. Regardless of what the exit status was, MAKE will continue.
+
    le fichier de commandes.
  
The command body is treated exactly as if it were entered as a line to
 
COMMAND.COM, with the exception that redirection and pipes are not
 
supported. MAKE executes the following built-in commands by invoking a copy
 
of COMMAND.COM to perform them:
 
  
  BREAK      CD      CHDIR      CLS      COPY
+
Cette commande fera MYPROG.PAS à être recherchées, en utilisant l'algorithme de recherche complète:
  MD        MKDIR  PATH      PROMPT  REN
+
  RENAME    SET    TIME      TYPE    VER
+
  VERIFY    VOL
+
  
MAKE searches for any other command name using the MS-DOS search algorithm:
+
  tpc myprog.pas / $ B +, R +, I +
  
  o The current directory is searched first, followed by each directory
 
    in the path.
 
  
  o In each directory, first a file with the extension .COM is checked,
+
  Macros
    then an .EXE file, and finally a .BAT.
+
  
  o If a .BAT file is found, a copy of COMMAND.COM is invoked to execute
+
Souvent, certaines commandes, les noms de fichiers, ou des options sont utilisés encore et encore dans votre makefile. Dans un exemple plus tôt dans la présente annexe, toutes les commandes de PTC utilisé le commutateur / Tc: \ TP5 \ bin, ce qui signifie que les fichiers TPC.CFG et TURBO.TPL sont dans le sous-répertoire C: \ TP5 \ BIN. Supposons que vous vouliez passer à un autre sous-répertoire pour ces fichiers; Qu'est-ce que tu ferais? Vous pouvez passer et modifier toutes les options / T, en insérant le nom de chemin approprié. Ou, vous pouvez définir une macro.
    the batch file.
+
  
 +
Une macro est un nom qui représente une certaine chaîne de caractères (lettres et chiffres). Une définition macro donne un nom de macro et le texte d'expansion; par la suite, lorsque MAKE rencontre le nom de la macro, il remplace le nom avec le texte d'expansion.
  
This command will cause MYPROG.PAS to be searched for, using the full
+
Supposons que vous avez défini la macro suivante au début de votre makefile:
search algorithm:
+
  
  tpc myprog.pas /$B+,R+,I+
+
  TURBO = c: \ TP5 \ bin
  
 +
Vous avez défini la macro TURBO, ce qui équivaut à la chaîne c: \ TP5 \ bin. Vous pouvez maintenant réécrire le makefile comme suit:
  
Macros
+
  TURBO = c: \ TP5 \ bin
--------
+
  myapp.exe: myapp.pas myglobal.tpu myutils.tpu
 +
    tpc myapp / T $ (TURBO)
  
Often certain commands, file names, or options are used again and again in
+
  myutils.tpu: myutils.pas myglobal.tpu myutil.obj
your makefile. In an example earlier in this appendix, all the TPC commands
+
    myutils de tpc / T $ (TURBO)
used the switch /Tc:\tp5\bin, which means that the files TPC.CFG and
+
TURBO.TPL are in the subdirectory C:\TP5\BIN. Suppose you wanted to switch
+
to another subdirectory for those files; what would you do? You could go
+
through and modify all the /T options, inserting the appropriate path name.
+
Or, you could define a macro.
+
  
A macro is a name that represents some string of characters (letters and
 
digits). A macro definition gives a macro name and the expansion text;
 
thereafter, when MAKE encounters the macro name, it replaces the name with
 
the expansion text.
 
  
Suppose you defined the following macro at the start of your makefile:
+
Partout dans le répertoire Turbo est spécifié, vous utilisez la macro invocation $ (TURBO). Lorsque vous exécutez FAIS, $ (TURBO) est remplacé par le texte d'expansion, c: \ TP5.BIN. Le résultat est le même ensemble de commandes que vous aviez avant mais avec une plus grande flexibilité.
  
  TURBO=c:\tp5\bin
+
En fait, si vous laissez la première ligne tout à fait, vous pouvez spécifier le sous-répertoire que vous voulez à chaque fois que vous exécutez FAIS, en utilisant la -D (Définir) Option:
  
You've defined the macro TURBO, which is equivalent to the string
+
  faire -DTURBO = c: \ TP5 \ projet
c:\tp5\bin. You could now rewrite the makefile as follows:
+
  
  TURBO=c:\tp5\bin
+
définitions Macro prennent la forme
  myapp.exe:  myapp.pas myglobal.tpu myutils.tpu
+
    tpc myapp /T$(TURBO)
+
  
  myutils.tpu: myutils.pas myglobal.tpu myutil.obj
+
  macro_name = texte d'expansion
    tpc myutils /T$(TURBO)
+
  
 +
où macro_name est le nom d'une macro composée d'une chaîne de lettres et de chiffres sans espace en elle, même si vous pouvez avoir des espaces entre macro_name et le signe égal (=). [Texte d'extension] est une chaîne arbitraire contenant des lettres, des chiffres, des espaces et la ponctuation; il se termine par un retour chariot. Notez que les macros sont sensibles à la casse. Ainsi, les noms de macro Turbo, Turbo et TURBO sont tous différents.
  
Everywhere the Turbo directory is specified, you use the macro invocation
+
Si macro_name a été préalablement définie, soit par une définition de macro dans le makefile ou par l'option -D sur la ligne de commande MAKE, la nouvelle définition remplace l'ancienne.
$(TURBO). When you run MAKE, $(TURBO) is replaced with its expansion text,
+
c:\TP5.BIN. The result is the same set of commands you had before but with
+
greater flexibility.
+
  
In fact, if you leave out the first line altogether, you can specify which
+
Les macros sont invoquées dans votre makefile avec le format
subdirectory you want each time you run MAKE, using the -D (Define) option:
+
  
  make -DTURBO=c:\tp5\project
+
  $ (Macro_name)
  
Macro definitions take the form
+
Macros dans des macros: Macros ne peuvent pas être invoquées sur le (macro_name) côté gauche d'une définition de macro. Ils peuvent être utilisés sur le côté droit (texte d'extension), mais ils ne sont pas développées jusqu'à ce que la macro étant définie est invoquée. En d'autres termes, quand une macro invocation est étendu, toutes les macros intégrées dans son texte d'expansion sont également élargis.
  
  macro_name=expansion text
+
FAIS est livré avec plusieurs macros prédéfinies spéciales intégré: $ d, $ *, $ <, $ :, $, et $ &.. La première est une macro de test défini, utilisé dans les directives conditionnelles si et elif!; les autres sont de noms de fichiers macros, utilisés dans des règles explicites et implicites. Les différents noms de fichiers macros fonctionnent de façon similaire, en élargissant à une certaine variation du nom de chemin complet du fichier en cours de construction. En outre, les chaînes d'environnement SET actuels sont automatiquement chargés comme des macros, et la macro __MAKE__ est définie à 1 (un).
  
where macro_name is the name of a macro made up of a string of letters and
 
digits with no whitespace in it, though you can have whitespace between
 
macro_name and the equal sign (=). [expansion text] is any arbitrary string
 
containing letters, digits, whitespace, and punctuation; it is ended by a
 
carriage return.  Note that macros are case sensitive.  Thus the macro
 
names Turbo, turbo and TURBO are all different.
 
  
If macro_name has previously been defined, either by a macro definition in
+
  Macro d'essai définie ($ d)
the makefile or by the -D option on the MAKE command line, the new
+
definition replaces the old.
+
  
Macros are invoked in your makefile with the format
+
Cette macro se développe à 1 si le nom de la macro donné est défini, ou à 0 si elle est pas. Le contenu du texte d'expansion de la macro n'a pas d'importance. Cette macro spéciale est autorisée uniquement dans! Directives si et! Elif. Par exemple, si vous vouliez modifier votre makefile afin qu'il utiliserait un répertoire particulier Turbo Pascal, si vous ne spécifiez pas un, vous pourriez mettre ceci au début de votre makefile:
  
  $(macro_name)
+
  ! Si! $ D (TURBO) # si TURBO est pas défini
 +
  TURBO = c: \ TP5 \ bin # définissent à C: \ TP5 \ BIN
 +
  !fin si
  
Macros in macros: Macros cannot be invoked on the left (macro_name) side of
+
Si vous appelez FAIRE avec la ligne de commande
a macro definition. They can be used on the right (expansion text) side,
+
but they are not expanded until the macro being defined is invoked. In
+
other words, when a macro invocation is expanded, any macros embedded in
+
its expansion text are also expanded.
+
  
MAKE comes with several special predefined macros built-in: $d, $*, $<, $:,
+
  faire -DTURBO = c: \ TP5 \ projet
$., and $&. The first is a defined test macro, used in the conditional
+
directives !if and !elif; the others are file name macros, used in explicit
+
and implicit rules. The various file name macros work in similar ways,
+
expanding to some variation of the full path name of the file being built.
+
In addition, the current SET environment strings are automatically loaded
+
as macros, and the macro __MAKE__ is defined to be 1 (one).
+
  
 +
puis TURBO est défini comme c: \ TP5 \ projet. Toutefois, si vous venez invoquez MAKE par lui-même,
  
Defined Test Macro ($d)
+
  faire
  
This macro expands to 1 if the given macro name is defined, or to 0 if it
+
puis TURBO est défini comme c: \ TP5 \ bin, votre sous-répertoire "par défaut".
is not. The content of the macro's expansion text does not matter. This
+
special macro is allowed only in !if and !elif directives. For example, if
+
you wanted to modify your makefile so that it would use a particular Turbo
+
Pascal directory if you didn't specify one, you could put this at the start
+
of your makefile:
+
  
  !if !$d(TURBO)            # if TURBO is not defined
 
  TURBO=c:\tp5\bin          # define it to C:\TP5\BIN
 
  !endif
 
  
If you invoke MAKE with the command line
+
  Base de nom de fichier Macro ($ *)
  
  make -DTURBO=c:\tp5\project
+
Cette macro est autorisée dans les commandes pour une explicite ou une règle implicite. La macro se développe pour le nom du fichier en cours de construction, à l'exclusion de toute prolongation, comme ceci:
  
then TURBO is defined as c:\tp5\project. If, however, you just invoke MAKE
+
  Nom du fichier est A: \ P \ TESTFILE.PAS
by itself,
+
  $ * Étend à A: \ P \ TESTFILE
  
  make
+
Par exemple, vous pouvez modifier la règle MYAPP.EXE explicite déjà donné à ressembler à ceci:
  
then TURBO is defined as c:\tp5\bin, your "default" subdirectory.
+
  myapp.exe: myapp.pas myglobal.tpu myutils.tpu
 +
    tpc $ * / T $ (TURBO)
  
  
Base File Name Macro ($*)
+
  Nom complet du fichier Macro ($ <)
  
This macro is allowed in the commands for an explicit or an implicit rule.
+
Le nom complet du fichier macro ($ <) est également utilisé dans les commandes d'une règle explicite ou implicite. Dans une règle explicite, $ <élargit le nom complet du fichier cible (y compris l'extension), comme ceci:
The macro expands to the file name being built, excluding any extension,
+
like this:
+
  
  File name is A:\P\TESTFILE.PAS
+
  Nom du fichier est A: \ P \ TESTFILE.PAS
   $* expands to A:\P\TESTFILE
+
   $ <Étend à A: \ P \ TESTFILE.PAS
  
For example, you could modify the explicit MYAPP.EXE rule already given to
+
Dans une règle implicite, $ <prend le nom du fichier ainsi que l'extension de la source. Par exemple, la règle implicite précédente
look like this:
+
  
  myapp.exe:  myapp.pas myglobal.tpu myutils.tpu
+
  .asm.obj:
     tpc $* /T$(TURBO)
+
     tasm $ * EAM, de $ * obj..;
  
 +
peut être réécrite comme
  
Full File Name Macro ($<)
+
  .asm.obj:
 +
      tasm $ <, $ * obj.
  
The full file name macro ($<) is also used in the commands for an explicit
 
or implicit rule. In an explicit rule, $< expands to the full target file
 
name (including extension), like this:
 
  
  File name is A:\P\TESTFILE.PAS
+
  Nom du fichier Chemin Macro ($ :)
  $< expands to A:\P\TESTFILE.PAS
+
  
In an implicit rule, $< takes on the file name plus the source extension.
+
Cette macro se développe pour le chemin d'accès (sans le nom de fichier), comme ceci:
For example, the previous implicit rule
+
  
  .asm.obj:
+
  Nom du fichier est A: \ P \ TESTFILE.PAS
    tasm $*.asm,$*.obj;
+
  $: Étend à A: \ P \
  
can be rewritten as
 
  
  .asm.obj:
+
  Nom de fichier et Macro Extension ($).
      tasm $<,$*.obj;
+
  
 +
Cette macro se développe pour le nom du fichier, avec l'extension, comme ceci:
  
File Name Path Macro ($:)
+
  Nom du fichier est A: \ P \ TESTFILE.PAS
 +
  $.  étend à TESTFILE.PAS
  
This macro expands to the path name (without the file name), like this:
 
  
  File name is A:\P\TESTFILE.PAS
+
  File Name Only Macro ($ &)
  $: expands to A:\P\
+
  
 +
Cette macro se développe pour le nom de fichier uniquement, sans chemin d'accès ou l'extension, comme ceci:
  
File Name and Extension Macro ($.)
+
  Nom du fichier est A: \ P \ TESTFILE.PAS
 +
  $ Et étend à TESTFILE
  
This macro expands to the file name, with extension, like this:
 
  
  File name is A:\P\TESTFILE.PAS
+
  directives
  $. expands to TESTFILE.PAS
+
  
 +
La version de MAKE livré avec Turbo Pascal permet quelque chose que les autres versions de MAKE ne le font pas: directives conditionnelles semblable à ceux autorisés pour Turbo Pascal. Vous pouvez utiliser ces directives pour inclure d'autres makefiles, de rendre les règles et les commandes conditionnelles, pour imprimer les messages d'erreur, et à des macros "UNDEFINE".
  
File Name Only Macro ($&)
+
Directives dans un makefile commencent par un point d'exclamation (!). Voici la liste complète des directives de MAKE:
  
This macro expands to the file name only, without path or extension, like
+
  !comprendre
this:
+
  !si
 +
  !autre
 +
  ! elif
 +
  !fin si
 +
  !Erreur
 +
  ! undef
  
  File name is A:\P\TESTFILE.PAS
+
Une directive fichier-inclusion (! Include) spécifie un fichier à inclure dans le makefile pour l'interprétation au point de la directive. Il prend la forme suivante:
  $& expands to TESTFILE
+
  
 +
  ! Include "filename"
  
Directives
+
ou
------------
+
  
The version of MAKE bundled with Turbo Pascal allows something that other
+
  ! Include <filename>
versions of MAKE don't: conditional directives similiar to those allowed
+
for Turbo Pascal. You can use these directives to include other makefiles,
+
to make the rules and commands conditional, to print out error messages,
+
and to "undefine" macros.
+
  
Directives in a makefile begin with an exclamation point (!). Here is the
+
Ces directives peuvent être imbriquées arbitrairement profonde. Si une directive include tente d'inclure un fichier qui a déjà été inclus dans un certain niveau externe de nidification (de sorte qu'une boucle de nidification est sur le point de commencer), y compris la directive interne est rejetée comme une erreur.
complete list of MAKE directives:
+
  
  !include
+
Les directives conditionnelles (! si! elif,! d'autre, et! endif) donner un programmeur une certaine souplesse dans la construction makefiles. Règles et macros peuvent être "conditionalized" de telle sorte que la définition de ligne de commande macro (en utilisant l'option -D) peut activer ou désactiver les sections du makefile.
  !if
+
  !else
+
  !elif
+
  !endif
+
  !error
+
  !undef
+
  
A file-inclusion directive (!include) specifies a file to be included into
+
Le format de ces directives parallèles, mais est plus étendue que, les directives conditionnelles permises par Turbo Pascal:
the makefile for interpretation at the point of the directive. It takes the
+
following form:
+
  
  !include "filename"
+
  ! Si l'expression
 +
    [ lignes ]
 +
  !fin si
  
or
+
  ! Si l'expression
 +
    [ lignes ]
 +
  !autre
 +
    [ lignes ]
 +
  !fin si
  
  !include <filename>
+
  ! Si l'expression
 +
    [ lignes ]
 +
  ! Elif expression
 +
    [ lignes ]
 +
  !fin si
  
These directives can be nested arbitrarily deep. If an include directive
+
Les directives conditionnelles forment un groupe, avec au moins un! Si directive commençant le groupe et une directive endif! Fermer le groupe.
attempts to include a file that has already been included in some outer
+
level of nesting (so that a nesting loop is about to start), the inner
+
include directive is rejected as an error.
+
  
Conditional directives (!if, !elif, !else, and !endif) give a programmer a
+
L'expression a permis dans un! Si ou un! Elif directive utilise une syntaxe similaire à celle trouvée dans le langage de programmation C. L'expression est évaluée comme un entier signé expression simple 32 bits.
measure of flexibility in constructing makefiles. Rules and macros can be
+
"conditionalized" so that a command-line macro definition (using the -D
+
option) can enable or disable sections of the makefile.
+
  
The format of these directives parallels, but is more extensive than, the
+
Les nombres peuvent être entrés en décimal, octal ou hexadécimal constantes. Par exemple, ceux-ci sont des constantes juridiques dans une expression:
conditional directives allowed by Turbo Pascal:
+
  
  !if expression
+
  4536 # décimal constant
    [ lines ]
+
  0677 constant # octal (notez le zéro)
   !endif
+
   0x23aF # constante hexadécimale
  
  !if expression
+
et l'un des opérateurs unaires suivants:
    [ lines ]
+
  !else
+
    [ lines ]
+
  !endif
+
  
  !if expression
+
  - négation
    [ lines ]
+
   ~ Bit complément
   !elif expression
+
  ! pas logique
    [ lines ]
+
  !endif
+
  
The conditional directives form a group, with at least an !if directive
+
Une expression peut utiliser l'un des opérateurs binaires suivants:
beginning the group and an !endif directive closing the group.
+
  
The expression allowed in an !if or an !elif directive uses a syntax
+
  + addition
similar to that found in the C programming language. The expression is
+
  - soustraction
evaluated as a simple 32-bit signed integer expression.
+
  * multiplication
 +
  / division
 +
  % restant
 +
  >> Décalage à droite
 +
  << Décalage à gauche
 +
  & Bitwise et
 +
  |  ou binaire
 +
  ^ OR exclusif ou
 +
  && Logique et
 +
  ||  logique ou
 +
  > Supérieur
 +
  <Inférieur à
 +
  > = Supérieur ou égal à
 +
  <= Inférieur ou égal à
 +
  == égalité
 +
  ! = Inégalité
  
Numbers can be entered as decimal, octal, or hexadecimal constants. For
+
Une expression peut contenir l'opérateur ternaire suivant:
example, these are legal constants in an expression:
+
  
  4536      # decimal constant
+
  ?  : L'opérande avant?  est traité comme un test.
  0677      # octal constant (note the leading zero)
+
  0x23aF    # hexadecimal constant
+
  
and any of the following unary operators:
+
  Si la valeur de cet opérande est non nul, alors la seconde
 +
        opérande (la partie entre le? et le côlon) est le
 +
        résultat.  Si la valeur du premier opérande est égal à zéro, la
 +
        La valeur du résultat est la valeur du troisième opérande
 +
        (La partie après le :).
  
  -    negation
+
Les parenthèses peuvent être utilisées pour des opérandes de groupe dans une expression. En l'absence de parenthèses, les opérateurs binaires sont regroupés en fonction de la même priorité donnée dans la langue de C.
  ~    bit complement
+
  !    logical not
+
  
An expression can use any of the following binary operators:
+
Le regroupement est de gauche à droite pour les opérateurs de même priorité, à l'exception de l'opérateur ternaire (? :), Ce qui est de droite à gauche.
  
  +    addition
+
Les macros peuvent être invoquées dans une expression, et la macro $ d spéciale () est reconnu. Après toutes les macros ont été élargies, l'expression doit avoir la syntaxe correcte. Tous les mots dans l'expression élargie sont traités comme des erreurs.
  -    subtraction
+
  *    multiplication
+
  /    division
+
  %    remainder
+
  >>    right shift
+
  <<    left shift
+
  &    bitwise and
+
  |    bitwise or
+
  ^    bitwise exclusive or
+
  &&    logical and
+
  ||    logical or
+
  >    greater than
+
  <    less than
+
  >=    greater than or equal to
+
  <=    less than or equal to
+
  ==    equality
+
  !=    inequality
+
  
An expression can contain the following ternary operator:
+
La directive d'erreur (Erreur) les causes MAKE pour arrêter et imprimer un fatal diagnostic contenant le texte après erreur!. Il prend le format
  
  ? :   The operand before the ? is treated as a test.
+
   Erreur [any_text]
  
        If the value of that operand is nonzero, then the second
+
Cette directive est conçue pour être inclus dans les directives conditionnelles pour permettre à une condition d'interruption définie par l'utilisateur.
        operand (the part between the ? and the colon) is the
+
        result. If the value of the first operand is zero, the
+
        value of the result is the value of the third operand
+
        (the part after the :).
+
  
Parentheses can be used to group operands in an expression. In the absence
+
La directive undefine (! Undef) provoque une définition de la macro appelée à être oublié. Si la macro est actuellement undefined, cette directive n'a pas d'effet.
of parentheses, binary operators are grouped according to the same
+
precedence given in the C language.
+
  
Grouping is from left to right for operators of equal precedence, except
+
  Utilisation FAIRE
for the ternary operator (? :), which is right to left.
+
  
Macros can be invoked within an expression, and the special macro $d() is
+
==
recognized. After all macros have been expanded, the expression must have
+
proper syntax. Any words in the expanded expression are treated as errors.
+
  
The error directive (!error) causes MAKE to stop and print a fatal
+
Vous savez maintenant beaucoup de choses sur la façon d'écrire makefiles; est maintenant le temps d'apprendre comment les utiliser avec MAKE. La façon la plus simple d'utiliser MAKE est de taper la commande
diagnostic containing the text after !error. It takes the format
+
  
  !error [any_text]
+
  FAIRE
  
This directive is designed to be included in conditional directives to
+
à l'invite MS-DOS. FAIRE puis recherche MAKEFILE; si elle ne peut le trouver, il cherche MAKEFILE.MAK; si elle ne peut pas trouver cela, il arrête avec un message d'erreur.
allow a user-defined abort condition.  
+
  
The undefine directive (!undef) causes any definition for the named macro
+
Vous pouvez spécifier un fichier avec l'option -f:
to be forgotten. If the macro is currently undefined, this directive has no
+
effect.
+
  
Using MAKE
+
  FAIRE -fstars.mak
============
+
  
You now know a lot about how to write makefiles; now's the time to learn
+
La syntaxe générale pour MAKE est
how to use them with MAKE. The simplest way to use MAKE is to type the
+
command
+
  
  MAKE
+
  faire l'option cible l'option ... cible ...
  
at the MS-DOS prompt. MAKE then looks for MAKEFILE; if it can't find it, it
+
où option est une option MAKE (voir plus loin) et la cible est le nom d'un fichier cible à traiter par des règles explicites.
looks for MAKEFILE.MAK; if it can't find that, it halts with an error
+
message.
+
  
You can specify a file with the -f option:
+
Si la ligne de commande ne comprend pas les noms de cible, MAKE utilise le premier fichier cible mentionné dans une règle explicite. Si une ou plusieurs cibles sont mentionnés sur la ligne de commande, ils seront construits selon les besoins.
  
  MAKE -fstars.mak
+
Voici quelques exemples de lignes de commande MAKE:
  
The general syntax for MAKE is
+
  faire -fstars.mak -n
 +
  fait du
 +
  faire -DTURBO -Iinclude = c: \ TP5 \ projet
  
  make option option ... target target ...
 
  
where option is a MAKE option (discussed later) and target is the name of a
+
  Le fichier BUILTINS.MAK
target file to be handled by explicit rules.
+
  
If the command line does not include any target names, MAKE uses the first
+
Comme vous familiariser avec MAKE, vous trouverez qu'il ya des macros et des règles (généralement des implicites) que vous utilisez encore et encore. Vous avez trois façons de les manipuler. D'abord, vous pouvez les mettre dans chaque makefile vous créez. Deuxièmement, vous pouvez les mettre tous dans un seul fichier et utiliser le! Inclut directive dans chaque Makefile vous créez. Troisièmement, vous pouvez les mettre tous dans un fichier nommé BUILTINS.MAK.
target file mentioned in an explicit rule. If one or more targets are
+
mentioned on the command line, they will be built as necessary.
+
  
Here are some more examples of MAKE command lines:
+
Chaque fois que vous exécutez MAKE, il recherche un fichier nommé BUILTINS.MAK; si elle trouve le fichier, MAKE le lit avant MAKEFILE manutention (ou le Makefile que vous voulez qu'il traite).
  
  make -n -fstars.mak
+
Le fichier BUILTINS.MAK est destiné à toutes les règles (généralement des règles implicites) ou des macros qui seront couramment utilisés dans les fichiers partout sur votre ordinateur.
  make -s
+
  make -Iinclude -DTURBO=c:\tp5\project
+
  
 +
Il n'y a aucune exigence que tout fichier BUILTINS.MAK existe. Si MAKE trouve un fichier BUILTINS.MAK, il interprète ce fichier en premier. Si MAKE ne peut pas trouver un fichier BUILTINS.MAK, il passe directement à interpréter MAKEFILE (ou quoi que makefile vous spécifiez).
  
The BUILTINS.MAK File
 
-----------------------
 
  
As you become familiar with MAKE, you will find that there are macros and
+
  Comment faire des recherches pour les fichiers
rules (usually implicit ones) that you use again and again. You've got
+
three ways of handling them. First, you can put them in every makefile you
+
create. Second, you can put them all in one file and use the !include
+
directive in each makefile you create. Third, you can put them all in a
+
file named BUILTINS.MAK.
+
  
Each time you run MAKE, it looks for a file named BUILTINS.MAK; if it finds
+
FAIS recherchera BUILTINS.MAK dans le répertoire courant ou dans le répertoire exec si votre ordinateur fonctionne sous DOS 3.x. Vous devez placer ce fichier dans le même répertoire que le fichier MAKE.EXE.
the file, MAKE reads it in before handling MAKEFILE (or whichever makefile
+
you want it to process).
+
  
The BUILTINS.MAK file is intended for any rules (usually implicit rules) or
+
FAIRE toujours recherches pour le makefile dans le répertoire en cours. Ce fichier contient les règles pour le fichier de programme exécutable particulier en cours de construction. Les deux fichiers ont des règles de syntaxe identiques.
macros that will be commonly used in files anywhere on your computer.
+
  
There is no requirement that any BUILTINS.MAK file exist. If MAKE finds a
+
FAIRE également des recherches pour tout! Inclure des fichiers dans le répertoire courant. Si vous utilisez le -I (Inclure) option, il sera également rechercher dans le répertoire spécifié.
BUILTINS.MAK file, it interprets that file first. If MAKE cannot find a
+
BUILTINS.MAK file, it proceeds directly to interpreting MAKEFILE (or
+
whatever makefile you specify).
+
  
  
How MAKE Searches for Files
+
  Faire des options de ligne de commande
-----------------------------
+
  
MAKE will search for BUILTINS.MAK in the current directory or in the exec
+
  -Didentifier Définit l'identificateur nommé à la chaîne consistant en
directory if your computer is running under DOS 3.x. You should place this
+
                  le caractère unique 1.
file in the same directory as the MAKE.EXE file.
+
  
MAKE always searches for the makefile in the current directory only. This
+
  -Diden = Chaîne Définit l'iden identificateur nommé à la chaîne après
file contains the rules for the particular executable program file being
+
                  le signe égal. La chaîne ne peut pas contenir d'espaces ou
built. The two files have identical syntax rules.
+
                  onglets.
  
MAKE also searches for any !include files in the current directory. If you
+
  MAKE -Idirectory va rechercher les fichiers à inclure dans l'indication
use the -I (Include) option, it will also search in the specified
+
                  répertoire (ainsi que dans le répertoire courant).
directory.
+
  
 +
  -Uidentifier Annule la définition des définitions précédentes du nom
 +
                  identifiant.
  
  MAKE Command-Line Options
+
  -s Normalement, FAIS imprime chaque commande car il est sur le point d'être
---------------------------
+
                  réalisé. Avec l'option -s, pas de commandes sont imprimées
 +
                  avant l'exécution.
  
  -Didentifier   Defines the named identifier to the string consisting of
+
   Causes -n MAKE pour imprimer les commandes, mais pas réellement
                   the single character 1.
+
                   les exécuter.  Ceci est utile pour le débogage d'un makefile.
  
  -Diden=string Defines the named identifier iden to the string after
+
  -fnom de fichier Utilise le nom de fichier que le fichier MAKE. Si le nom de fichier ne
                   the equal sign. The string cannot contain any spaces or
+
                   existe et aucune extension est donnée, tente filename.MAK.
                  tabs.
+
  
  -Idirectory    MAKE will search for include files in the indicated
+
  -?  ou -h message d'aide.
                  directory (as well as in the current directory).
+
  
  -Uidentifier  Undefines any previous definitions of the named
 
                  identifier.
 
  
  -s            Normally, MAKE prints each command as it is about to be
+
  FAIRE Messages d'erreur
                  executed. With the -s option, no commands are printed
+
                  before execution.
+
  
  -n            Causes MAKE to print the commands, but not actually
+
  Erreurs fatales
                  perform them. This is useful for debugging a makefile.
+
  
  -ffilename    Uses filename as the MAKE file. If filename does not
+
Je ne sais pas comment faire XXXXXXXX
                  exist and no extension is given, tries filename.MAK.
+
  
  -? or -h      Prints help message.
+
  Ce message est émis lorsque MAKE rencontre un nom de fichier inexistant dans
 +
  la séquence de construction, et aucune règle existe qui permettrait le nom de fichier
 +
  être construit.
  
 +
Erreur de directive: XXXX
  
MAKE Error Messages
+
  Ce message est émis lorsque MAKE traite une directive #error dans le
---------------------
+
  fichier source.  Le texte de la directive est affiché dans le message.
  
Fatal Errors
+
Mauvaise argument de ligne de commande: XXX
  
Don't know how to make XXXXXXXX
+
  Cette erreur se produit si MAKE est exécuté avec incorrect en ligne de commande
  This message is issued when MAKE encounters a nonexistent file name in
+
   arguments.
  the build sequence, and no rule exists that would allow the file name to
+
   be built.
+
  
Error directive: XXXX
+
Pas assez de mémoire
  This message is issued when MAKE processes an #error directive in the
+
  source file. The text of the directive is displayed in the message.
+
  
Incorrect command line argument: XXX
+
  Cette erreur se produit lorsque le stockage de travail total a été épuisé.  Toi
   This error occurs if MAKE is executed with incorrect command-line
+
   devrait essayer ceci sur une machine avec plus de mémoire.  Si vous avez déjà 640K
   arguments.
+
   dans votre machine, vous pouvez avoir à simplifier le fichier source.
  
Not enough memory
+
Impossible de commande d'exécution
  This error occurs when the total working storage has been exhausted. You
+
  should try this on a machine with more memory. If you already have 640K
+
  in your machine, you may have to simplify the source file.
+
  
Unable to execute command
+
  Ce message est émis après avoir tenté d'exécuter une commande. cela pourrait
  This message is issued after attempting to execute a command. This could
+
   être le résultat du fichier de commande ne sont pas trouvés, ou parce qu'il était
   be a result of the command file not being found, or because it was
+
   mal orthographié. Une possibilité moins probable est que la commande existe mais est
   misspelled. A less likely possibility is that the command exists but is
+
   en quelque sorte corrompu.
   somehow corrupted.
+
  
Unable to open makefile
+
Impossible d'ouvrir le fichier makefile
  This message is issued when the current directory does not contain a
+
  file named MAKEFILE.
+
  
 +
  Ce message est émis lorsque le répertoire courant ne contient pas de
 +
  fichier makefile nommé.
  
Errors
 
  
Bad file name format in include statement
+
  les erreurs
  Include file names must be surrounded by quotes or angle brackets. The
+
  file name was missing the opening quote or angle bracket.
+
  
Bad undef statement syntax
+
Bad format de nom de fichier dans include
  An !undef statement must contain a single identifier and nothing else as
+
  the body of the statement.
+
  
Character constant too long
+
  Inclure les noms de fichiers doivent être entourés par des guillemets ou des crochets.  le
   Character constants can be only one or two characters long.
+
   nom de fichier était manquant la citation d'ouverture ou équerre.
  
Command arguments too long
+
syntaxe de l'instruction undef Bad
  The arguments to a command executed by MAKE were more than 127
+
  characters--a limit imposed by DOS.
+
  
Command syntax error
+
  Une déclaration undef! Doit contenir un identifiant unique et rien d'autre que
   This message occurs if
+
   le corps de la déclaration.
  
      o the first rule line of the makefile contained any leading
+
constante de caractères trop longue
        whitespace.
+
  
      o an implicit rule did not consist of .ext.ext:.
+
  constantes de caractères peuvent être seulement un ou deux caractères.
  
      o an explicit rule did not contain a name before the : character.
+
Les arguments de commande trop long
  
      o a macro definition did not contain a name before the = character.
+
  Les arguments d'une commande exécutée par MAKE étaient plus de 127
 +
  caractères - une limite imposée par DOS.
  
Division by zero
+
erreur de syntaxe de commande
  A divide or remainder in an !if statement has a zero divisor.
+
  
Expression syntax error in !if statement
+
  Ce message se produit si
  The expression in an !if statement is badly formed--it contains a
+
  mismatched parenthesis, an extra or missing operator, or a missing or
+
  extra constant.
+
  
File name too long
+
  o la première ligne de la règle du makefile contenait tout premier plan
  The file name given in an !include directive was too long for MAKE to
+
        des espaces.
  process. File path names in MS-DOS must be no more than 78 characters
+
  long.
+
  
Illegal character in constant expression X
+
  o une règle implicite ne consistait pas en .ext.ext :.
  MAKE encountered some character not allowed in a constant expression. If
+
  the character is a letter, this indicates a (probably) misspelled
+
  identifier.
+
  
Illegal octal digit
+
  o une règle explicite ne contenait pas un nom avant le caractère:.
  An octal constant was found containing a digit of 8 or 9.
+
  
Macro expansion too long
+
  oa macro définition ne contient pas de nom avant le caractère =.
  A macro cannot expand to more than 4096 characters. This error often
+
  occurs if a macro recursively expands itself. A macro cannot legally
+
  expand to itself.
+
  
Misplaced elif statement
+
Division par zéro
  An !elif directive was encountered without any matching !if directive.
+
  
Misplaced else statement
+
  Une fracture ou reste dans une! If a un diviseur de zéro.
  An !else directive was encountered without any matching !if directive.
+
  
Misplaced endif statement
+
Expression erreur de syntaxe dans! If
  An !endif directive was encountered without any matching !if directive.
+
  
No file name ending
+
  L'expression dans une instruction if est mal formé - il contient un
   The file name in an include statement was missing the correct closing
+
   parenthèses correspondent pas, un opérateur supplémentaire ou manquant, ou d'un manque ou
   quote or angle bracket.
+
   constante supplémentaire.
  
Redefinition of target XXXXXXXX
+
Nom de fichier trop long
  The named file occurs on the left-hand side of more than one explicit
+
  rule.
+
  
Unable to open include file XXXXXXXXX.XXX
+
  Le nom de fichier donné dans un! Inclut directive était trop long pour MAKE à
   The named file could not be found. This could also be caused if an
+
   processus. noms de chemin du fichier dans MS-DOS ne doivent pas être plus de 78 caractères
   include file included itself. Check whether the named file exists.
+
   longue.
  
Unexpected end of file in conditional started on line #
+
caractère illicite de la constante expression X
  The source file ended before MAKE encountered an !endif. The !endif was
+
  either missing or misspelled.
+
  
Unknown preprocessor statement
+
  FAIS rencontré un certain caractère non autorisé dans une expression constante.  Si
   A ! character was encountered at the beginning of a line, and the
+
   le caractère est une lettre, cela indique un (probablement) mal orthographié
   statement name following was not error, undef, if, elif, include, else,
+
   identifiant.
  or endif.
+
  
 +
chiffres octal illégal
  
======================
+
  Une constante octale a été trouvé contenant un chiffre 8 ou 9.
3. The TOUCH Utility
+
======================
+
  
There are times when you want to force a particular target file to be
+
l'expansion macro trop long
recompiled or rebuilt, even though no changes have been made to its
+
sources. One way to do this is to use the TOUCH utility included with Turbo
+
Pascal. TOUCH changes the date and time of one or more files to the current
+
date and time, making it "newer" than the files that depend on it.
+
  
To force a target file to be rebuilt, "touch" one of the files that target
+
  Une macro ne peut pas étendre à plus de 4096 caractères.  Cette erreur souvent
depends on. To touch a file (or files), enter
+
  se produit si une macro se développe de manière récursive.  Une macro ne peut pas légalement
 +
  étendre à lui-même.
  
  touch filename [ filename ... ]
+
Déclaration de elif Misplaced
  
at the DOS prompt. TOUCH will then update the file's creation date(s).
+
  Une! Directive elif a été rencontrée sans correspondance! Si directive.
  
Once you do this, you can invoke MAKE to rebuild the touched target
+
else Misplaced
file(s).
+
  
 +
  Une! Else directive a été rencontrée sans correspondance! Si directive.
  
=====================
+
instruction endif Misplaced
4. The GREP Utility
+
=====================
+
  
GREP is a powerful search utility that can look for text in several files
+
  Une directive endif! A été rencontrée sans correspondance! Si directive.
at once.  
+
  
The command-line syntax for GREP follows:
+
Aucun nom de fichier se terminant
  
   GREP [options] searchstring [filespec ... ]
+
  Le nom de fichier dans une instruction include manquait la bonne fermeture
 +
   devis ou équerre.
  
where options consists of one or more single characters preceded by a
+
Redéfinition de la cible XXXXXXXX
hyphen, searchstring defines the pattern to search for, and filespec is the
+
file specification. filespec tells GREP which files (or groups of files) to
+
search; it can be an explicit file name or a generic file name
+
incorporating the DOS wildcards (? and *). You can also enter a path as
+
part of filespec; if you use filespec without a path, GREP only searches
+
the current directory. If you don't specify filespec, input to GREP must be
+
specified by redirecting stdin or piping.
+
  
 +
  Le fichier nommé se produit sur le côté gauche de plus d'un explicite
 +
  Règle.
  
The GREP Switches
+
Impossible d'ouvrir le fichier include XXXXXXXXX.XXX
===================
+
  
In the command line, options are one or more single characters preceded by
+
  Le fichier nommé n'a pu être trouvée. Cela pourrait aussi être causé si un
a hyphen (-). Each individual character is a switch that you can turn on or
+
  inclure fichier lui-même inclus.  Vérifiez si le fichier nommé existe.
off: type the plus symbol (+) after a character to turn the option on, or
+
type a hyphen (-) after the character to turn the option off.
+
  
The default is on (the + is implied): for example, -R means the same thing
+
Fin de fichier inattendue dans conditionnelle a commencé sur la ligne #
as -R+. You can list multiple options individually like this: -I -D -L). Or
+
you can combine them like this: -ILD or -IL -D, and so on). It's all the
+
same to GREP.
+
  
Here is a list of the switches and their meanings:
+
Le fichier source terminée avant MAKE rencontré une! Endif. Le endif! Était
 +
  soit manquant ou mal orthographié.
  
  -C  Count only: Only a count of matching lines is printed. For each
+
Inconnu déclaration préprocesseur
        file that contains at least one matching line, GREP prints the file
+
        name and a count of the number of matching lines. Matching lines
+
        are not printed.
+
  
  -D  Directories: For each filespec specified on the command line, GREP
+
UNE ! le caractère a été rencontré au début d'une ligne, et
        searches for all files that match the file specification, both in
+
  Nom de l'instruction suivante n'a pas été l'erreur, undef, si, elif, comprend, d'autre,
        the directory specified and in all subdirectories below the
+
  ou endif.
        specified directory. If you give a filespec without a path, GREP
+
        assumes the files are in the current directory.
+
  
  -I  Ignore case: GREP ignores upper/lowercase differences (case
+
==L'utilitaire TOUCH==
        folding). GREP treats all letters a-z as being identical to the
+
        corresponding letters A-Z in all situations.
+
  
  -L  List match files: Only the name of each file containing a match is
+
Il y a des moments où vous voulez forcer un fichier cible particulier être recompilés ou reconstruites, même si aucune modification n'a été apportée à ses sources. Une façon de le faire est d'utiliser l'utilitaire TOUCH inclus avec Turbo Pascal. TOUCH change la date et l'heure d'un ou plusieurs fichiers à la date et l'heure actuelle, ce qui rend "plus récent" que les fichiers qui en dépendent.
        printed. After GREP finds a match, it prints the file name and
+
        processing immediately moves on to the next file.
+
  
  -N  Numbers: Each matching line that GREP prints is preceded by its
+
Pour forcer un fichier cible à reconstruire, "toucher" l'un des fichiers qui cible dépend. Pour toucher un fichier (ou fichiers), entrez
        line number.
+
  
  -O  UNIX output format: Changes the output format of matching lines to
+
toucher filename [nom de fichier ...]
        support more easily the UNIX style of command-line piping. All
+
        lines of output are preceded by the name of the file which
+
        contained the matching line.
+
  
  -R  Regular expression search: The text defined by searchstring is
+
à l'invite DOS. TOUCH mettra alors à jour la date de création du fichier (s).
        treated as a regular expression instead of as a literal string.
+
  
  -U  Update options: GREP will combine the options given on the command
+
Une fois que vous faites cela, vous pouvez appeler MAKE pour reconstruire le fichier cible touché (s).
        line with its default options and write these to the GREP.COM file
+
        as the new defaults. (In other words, GREP is self-configuring.)
+
        This option allows you to tailor the default option settings to
+
        your own taste.
+
  
  -V  Non-match: Only non-matching lines are printed. Only lines that do
+
==L'utilitaire GREP==
        not contain the search string are considered to be non-matching
+
        lines.
+
  
  -W  Word search: Text found which matches the regular expression will
+
GREP est un utilitaire de recherche puissant qui peut rechercher du texte dans plusieurs fichiers à la fois.
        be considered a match only if the character immediately preceding
+
        and following cannot be part of a word. The default word character
+
        set includes A-Z, 9-0, and the underbar (_). An alternate form of
+
        this option allows you to specify the set of legal word characters.
+
        Its form is -W[set], where set is any valid regular expression set
+
        definition. If alphabetic characters are used to define the set,
+
        the set will automatically be defined to contain both the upper and
+
        lower case values for each letter in the set, regardless of how it
+
        is typed, even if the search is case-sensitive. If the -W option is
+
        used in combination with the -U option, the new set of legal
+
        characters is saved as the default set.
+
  
  -Z  Verbose: GREP prints the file name of every file searched. Each
+
La syntaxe de ligne de commande pour GREP suit:
        matching line is preceded by its line number. A count of matching
+
        lines in each file is given, even if the count is zero.
+
  
Several of these options are in direct conflict with each other. In these
+
GREP [options] searchstring [filespec ...]
cases, the following order applies (the first one is the one that takes
+
precedence):
+
  
  -Z  -L  -C  -N
+
où les options se compose d'un ou plusieurs caractères simples précédés d'un trait d'union, searchstring définit le motif à rechercher, et filespec est la spécification de fichier. filespec dit GREP quels fichiers (ou groupes de fichiers) à la recherche; il peut être un nom de fichier explicite ou un nom de fichier générique intégrant les wildcards DOS (? et *). Vous pouvez également entrer un chemin dans le cadre de filespec; si vous utilisez filespec sans chemin, GREP recherche uniquement le répertoire en cours. Si vous ne spécifiez pas filespec, entrée GREP doit être spécifié en redirigeant stdin ou de la tuyauterie.
  
Each occurrence of an option overrides the previous definition: Its state
 
reflects the way you last set it. At any given time, each option can only
 
be on or off.
 
  
You can install your preferred default setting for each option in GREP.COM
+
Les commutateurs GREP
with the -U option. For example, if you want GREP to always do a verbose
+
search (-Z on), you can install it with the following command:
+
  
  GREP -U -Z
+
Dans la ligne de commande, les options sont un ou plusieurs caractères simples précédés par un tiret (-). Chaque caractère individuel est un interrupteur que vous pouvez activer ou désactiver: tapez le symbole plus (+) après un caractère pour activer l'option, ou tapez un trait d'union (-) après le caractère à désactiver l'option.
  
 +
La valeur par défaut est activé (+ est implicite): par exemple, -R signifie la même chose que -R +. Vous pouvez lister plusieurs options individuellement comme ceci: -I -D -L). Ou vous pouvez les combiner comme ceci: -ILD ou -IL -D, et ainsi de suite). Il est tout de même à GREP.
  
How to Search Using GREP
+
Voici une liste des commutateurs et leurs significations:
==========================
+
  
The value of searchstring defines the pattern GREP will search for. A
+
  -C Count seulement: Seulement un nombre de lignes correspondant est imprimé. Pour chaque
search string can be either a (via the -R switch) or a literal string. In
+
      fichier qui contient au moins une ligne de correspondance, GREP imprime le fichier
regular expressions, operators govern the search; literal strings have no
+
      nom et un décompte du nombre de lignes correspondant. Les lignes correspondantes
operators.
+
      ne sont pas imprimés.
  
You can enclose the search string in quotation marks to prevent spaces and
+
Annuaires -D: Pour chaque filespec spécifié sur la ligne de commande, GREP
tabs from being treated as delimiters. Matches will not cross line
+
      recherches pour tous les fichiers qui correspondent à la spécification de fichier, à la fois dans
boundaries (a match must be contained in a single line).
+
      le répertoire spécifié et dans tous les sous-répertoires du
 +
      répertoire spécifié. Si vous donnez un filespec sans chemin, GREP
 +
      suppose que les fichiers sont dans le répertoire courant.
  
When the -R switch is used, the search string is treated as a regular
+
-I Ignorer la casse: GREP ignore les différences supérieures / minuscules (cas
expression (as opposed to a literal expression), and the following symbols
+
      pliant). GREP traite toutes les lettres az comme étant identique à la
take on special meanings:
+
      lettres correspondantes AZ dans toutes les situations.
  
  ^  A caret at the start of the expression matches the start
+
Liste -L fichiers match: Seul le nom de chaque fichier contenant une correspondance est
       of a line.
+
        imprimé. Après GREP trouve une correspondance, il imprime le nom du fichier et
 +
       le traitement se déplace immédiatement sur le fichier suivant.
  
  $  A dollar sign at the end of the expression matches the end
+
Numbers -N: Chaque ligne de correspondance qui imprime GREP est précédée par sa
       of a line.
+
       numéro de ligne.
  
   .   A period matches any character.
+
   format de sortie -O UNIX: Change le format de sortie de correspondance des lignes pour supporter plus facilement le style UNIX de la tuyauterie de ligne de commande. Toutes les lignes de sortie sont précédés par le nom du fichier qui contenait la ligne correspondante.  
  
  *   An expression followed by an asterisk wildcard matches
+
   -R Recherche d'expression régulière: Le texte défini par searchstring est
       zero or more occurrences of that expression: fo* matches
+
        traité comme une expression régulière plutôt que comme une chaîne littérale.
 +
 
 +
  -U Options de mise à jour: GREP combineront les options données sur la commande
 +
        ligne avec ses options par défaut et les écrire dans le fichier GREP.COM
 +
        que les nouveaux paramètres par défaut.  (En d'autres termes, GREP est auto-configuration.)
 +
        Cette option vous permet d'adapter les paramètres de l'option par défaut
 +
        votre propre goût.
 +
 
 +
  -V Non-correspondance: Seules les lignes non correspondantes sont imprimées.  Seules les lignes qui font
 +
        pas contenir la chaîne de recherche sont considérés comme non-appariement
 +
        lignes.
 +
 
 +
  -W Recherche par mot: Texte trouvé qui correspond à l'expression régulière sera
 +
        être considéré comme un match que si le caractère immédiatement précédent
 +
        et à la suite ne peut pas faire partie d'un mot.  Le caractère de texte par défaut
 +
        ensemble comprend AZ, 9-0, et le soulignement (_).  Une autre forme de
 +
        cette option vous permet de spécifier le jeu de caractères juridiques de mots.
 +
        Sa forme est -W [set], où ensemble est un ensemble régulier valide d'expression
 +
        définition.  Si les caractères alphabétiques sont utilisés pour définir l'ensemble,
 +
        l'ensemble sera automatiquement défini pour contenir à la fois la partie supérieure et
 +
        minuscules valeurs pour chaque lettre dans l'ensemble, quelle que soit la façon dont il
 +
        est tapé, même si la recherche est sensible à la casse.  Si l'option -W est
 +
        utilisé en combinaison avec l'option -U, la nouvelle série de juridique
 +
        caractères est enregistré comme le jeu par défaut.
 +
 
 +
  -Z Verbose: GREP imprime le nom du fichier de chaque fichier recherché.  Chaque
 +
        ligne correspondante est précédée par son numéro de ligne.  Un compte de correspondance
 +
        lignes dans chaque fichier est donné, même si le nombre est égal à zéro.
 +
 
 +
Plusieurs de ces options sont en conflit direct avec l'autre. Dans ces cas, l'ordre suivant applique (la première est celle qui a priorité):
 +
 
 +
  -Z -L -C -N
 +
 
 +
Chaque apparition d'une option remplace la définition précédente: Son état reflète la façon dont vous définissez dernière. À un moment donné, chaque option ne peut être activée ou désactivée.
 +
 
 +
Vous pouvez installer votre réglage par défaut préféré pour chaque option dans GREP.COM avec l'option -U. Par exemple, si vous voulez GREP toujours faire une recherche détaillée (-Z), vous pouvez l'installer avec la commande suivante:
 +
 
 +
  GREP -U -Z
 +
 
 +
 
 +
  Comment faire une recherche utilisant GREP
 +
 
 +
La valeur de searchstring définit le motif GREP va rechercher. Une chaîne de recherche peut être un (via le commutateur -R) ou une chaîne littérale. Dans les expressions régulières, les opérateurs régissent la recherche; chaînes littérales ont pas d'opérateurs.
 +
 
 +
Vous pouvez joindre la chaîne de recherche entre guillemets pour éviter les espaces et les onglets d'être traités comme des délimiteurs. Matches ne franchissent pas les limites de ligne (un match doit être contenu dans une seule ligne).
 +
 
 +
Lorsque le commutateur -R est utilisé, la chaîne de recherche est traitée comme une expression régulière (par opposition à une expression littérale), et les symboles suivants prennent des significations particulières:
 +
 
 +
  ^ Un caret au début de l'expression correspond au début
 +
      d'une ligne.
 +
 
 +
  $ Un signe dollar à la fin de l'expression correspond à la fin
 +
      d'une ligne.
 +
 
 +
  .  Une période correspond à tout caractère.
 +
 
 +
  * Une expression suivie d'un caractère générique astérisque correspond
 +
       zéro ou plusieurs occurrences de cette expression: fo * matchs
 
       f, fo, foo, etc.
 
       f, fo, foo, etc.
  
  +   An expression followed by a plus sign matches one or more
+
   + Une expression suivie d'un signe plus correspond à une ou plusieurs
       occurrences of that expression: fo+ matches fo, foo, etc.,
+
       occurrences de cette expression: fo + correspond à fo, foo, etc.,
       but not f.
+
       mais pas f.
  
  [] A string enclosed in brackets matches any character in
+
  [] Une chaîne entre crochets correspond à tout caractère dans
       that string, but no others. If the first character in the
+
       cette chaîne, mais pas d'autres. Si le premier caractère de la
       string is a caret (^), the expression matches any
+
       chaîne est un caret (^), l'expression correspond à tout
       character except the characters in the string. For
+
       caractère sauf les caractères de la chaîne. Pour
       example, [xyz] matches x, y, and z, while [^xyz] matches a
+
       par exemple, [xyz] correspond à x, y et z, tandis que [^ xyz] correspond à un
       and b, but not x or y. A range of characters can be
+
       et b, mais pas x ou y. Une gamme de caractères peut être
       specified by two characters separated by a hyphen (-).
+
       spécifié par deux caractères séparés par un tiret (-).
       These can be combined to form expressions like [?a-bd-z]
+
       Ceux-ci peuvent être combinés pour former des expressions telles que [? A-ld-z]
       to match ? and any letter except c.
+
       correspondre ? et toute lettre, sauf c.
  
  \   The backslash "escape character" tells GREP to seach for
+
   \ La barre oblique inverse "caractère d'échappement" dit GREP à seach pour
       the literal character that follows it. For example, \.
+
       le caractère littéral qui le suit. Par exemple, \.
       matches a period instead of any character.
+
       correspond à une période au lieu de caractère.
  
  Note: Four characters (?, +, *, and .) do not have any special
+
  Remarque: Quatre caractères (, +, * et?.) Ne pas avoir de spécial
   meaning when used in a set. The character ^ is only treated
+
   ce qui signifie quand il est utilisé dans un ensemble. Le caractère ^ est traité seulement
   specially if it immediately follows the beginning of the set
+
   spécialement si elle suit immédiatement le début de l'ensemble
   (that is, immediately after the [).
+
   (Qui est, immédiatement après le [).
  
Any ordinary character not mentioned in this list matches that character. A
+
Tout caractère ordinaire ne sont pas mentionnés dans cette liste correspond à ce caractère. Une concaténation d'expressions régulières est une expression régulière.
concatenation of regular expressions is a regular expression.
+
  
  
Examples Using GREP
+
  Exemples d'utilisation GREP
=====================
+
  
The following examples assume all options default to off.
+
Les exemples suivants supposent toutes les options par défaut désactivée.
  
----------------------------------------------------------------------
+
Recherche cordes grep dirdemo.pas fonction -n
  
Search String  grep -n function dirdemo.pas
+
Trouve DIRDEMO.PAS du fichier:
  
Finds      File DIRDEMO.PAS:
+
  46 LessFunc = function (X, Y: DirPtr): Boolean;
            46     LessFunc = function(X, Y: DirPtr): Boolean;
+
             55 fonction NumStr (N, D: Integer): string;
             55     function NumStr(N, D: Integer): string;
+
             68 fonction LessName (X, Y: DirPtr): Boolean;
             68     function LessName(X, Y: DirPtr): Boolean;
+
             73 fonction LessSize (X, Y: DirPtr): Boolean;
             73     function LessSize(X, Y: DirPtr): Boolean;
+
             78 fonction LessTime (X, Y: DirPtr): Boolean;
             78     function LessTime(X, Y: DirPtr): Boolean;
+
  
Remarks    Finds all functions in the file DIRDEMO.PAS. The -N
+
Remarques Constate toutes les fonctions dans le fichier DIRDEMO.PAS. Puis
            tells GREP to precede each matched line with its line
+
            number.
+
  
----------------------------------------------------------------------
+
  raconte GREP de faire précéder chaque ligne en correspondance avec sa ligne
 +
            nombre.
  
Search String  grep {\$ dirdemo.pas
+
Chaîne de recherche grep {$ \ dirdemo.pas
  
Finds      File DIRDEMO.PAS:
+
Trouve DIRDEMO.PAS du fichier:
            {$I-,S-}
+
            {$M 8192,8192,655360}
+
            {$F+}
+
            {$F-}
+
  
Remarks    Finds all compiler directives in DIRDEMO.PAS. The \
+
  {$ I, S}
            (backslash) preceding the $ is necessary. Without it,
+
             {$ M 8192,8192,655360}
             the $ would indicate the end of the line. All lines
+
             {$ F +}
             with { (curly bracket) as the last character would
+
             {$ F-}
             match this pattern and be printed out.
+
  
----------------------------------------------------------------------
+
Remarques Trouve toutes les directives du compilateur dans DIRDEMO.PAS. Le \
  
Search String   grep -i "^ *function.*).*real" *.pas
+
   (Backslash) précédant le $ est nécessaire. Sans ça,
 +
            le $ indiquerait la fin de la ligne.  toutes les lignées
 +
            avec {(accolade) comme le dernier caractère serait
 +
            correspondre à ce modèle et être imprimé.
  
Finds      File MCPARSER.PAS:
+
Chaîne de recherche grep -i "^ * fonction. *). * Vrai" * .pas
            function CellValue(Col, Row: Word): Real;
+
            function Parse(S: string; var Att: Word): Real;
+
  
Remarks    Finds all lines that begin with zero or more spaces
+
Trouve MCPARSER.PAS du fichier:
            followed by the word function, followed by any string
+
            of zero or more characters, followed by a
+
            parenthesis, followed by another string of zero or
+
            more characters, followed by the word Real, and
+
            ignores case. The net effect is to search for all
+
            functions returning a Real. See if you can think of
+
            other ways to do this.
+
  
            The double quotes are necessary because of the space
+
  fonction CellValue (Col, Rangée: Word): Real;
            in the pattern string. The quotes tell the DOS
+
             fonction Parse (S: string; var Att: Word): Real;
            command-line processor to treat the intervening
+
            characters as a single argument. Without the quotes,
+
             DOS will think the search string is actually two
+
            arguments, and GREP will think that everything after
+
            ^ (the caret character) refers to file names, and
+
            will complain
+
  
            No files matching: *FUNCTION.*).*.
+
Remarques Trouve toutes les lignes qui commencent par zéro ou plusieurs espaces
  
 +
  suivi de la fonction de mot, suivi d'une chaîne
 +
            de zéro ou plusieurs caractères, suivie d'une
 +
            entre parenthèses, suivie d'une autre chaîne de zéro ou
 +
            plusieurs caractères, suivi par le mot réel, et
 +
            ignore le cas.  L'effet net est à la recherche de tous les
 +
            fonctions renvoyant un réel.  Voyez si vous pouvez penser
 +
            d'autres façons de le faire.
  
=======================
+
  Les guillemets doubles sont nécessaires en raison de l'espace
  5. The BINOBJ Utility
+
            dans la chaîne de motif. Les citations disent DOS
=======================
+
            processeur de ligne de commande pour traiter l'intervenant
 +
            personnages comme un seul argument. Sans les citations,
 +
            DOS pense que la chaîne de recherche est en fait deux
 +
            arguments et GREP vont penser que tout ce qui suit
 +
            ^ (Le caractère caret) fait référence aux noms de fichiers, et
 +
            se plaignent
  
A utility program called BINOBJ.EXE has been added to convert any file to
+
  Aucun correspondant: * FONCTION *) *...
an .OBJ file so it can be linked into a Turbo Pascal program as a
+
"procedure." This is useful if you have a binary data file that must reside
+
in the code segment or is too large to make into a typed constant array.
+
For example, you can use BINOBJ with the Graph unit to link the graphics
+
driver or font files directly into your .EXE file. Then, to use your graph
+
program, you need only have the .EXE file (see the example BGILINK.PAS).
+
  
BINOBJ takes three parameters:
 
  
  BINOBJ <source[.BIN]>  <destination[.OBJ]>  <public name>
+
==L'utilitaire BINOBJ==
  
where source is the binary file to convert, destination is the name of the
+
Un programme utilitaire appelé BINOBJ.EXE a été ajouté pour convertir un fichier binaire (.BIN) en un fichier .OBJ de sorte qu'il peut être lié à un programme Turbo Pascal comme une «procédure». Ceci est utile si vous avez un fichier de données binaires qui doivent résider dans le segment de code ou est trop grand pour en faire un tableau de constantes typées. Par exemple, vous pouvez utiliser BINOBJ avec l'unité graphique pour lier le pilote graphique ou des fichiers de polices directement dans votre fichier .EXE. Ensuite, pour utiliser votre programme graphique, vous devez avoir seulement le fichier .EXE (voir l'exemple BGILINK.PAS).
.OBJ to be produced, and public name is the name of the procedure as it
+
will be declared in your Turbo Pascal program.
+
  
The following example, the procedure ShowScreen, takes a pointer as a
+
BINOBJ comporte trois paramètres:
parameter and moves 4000 bytes of data to screen memory. The file called
+
MENU.DTA contains the image of the main menu screen (80 * 25 * 2 = 4000
+
bytes).
+
  
Here's a simple (no error-checking) version of MYPROG.PAS:
+
  BINOBJ <source [.BIN]> <destination [.OBJ]> <nom public>
  
  program MyProg;
+
où source est le fichier binaire pour convertir, la destination est le nom de l'OBJ à produire, et le nom public est le nom de la procédure telle qu'elle sera déclarée dans votre programme Turbo Pascal.
  
  procedure ShowScreen(var ScreenData : Pointer);
+
L'exemple suivant, la procédure Showscreen, prend un pointeur comme paramètre et déplace 4000 octets de données à la mémoire de l'écran. Le fichier appelé MENU.DTA contient l'image de l'écran du menu principal (80 * 25 * 2 = 4000 octets).
   { Display a screenful of data--no error-checking! }
+
 
 +
Voici une version simple (pas de contrôle d'erreur) de MYPROG.PAS:
 +
 
 +
  programme monprog;
 +
 
 +
  procédure Showscreen (var ScreenData: Pointer);
 +
   {Affiche un plein écran des données - pas de contrôle d'erreur! }
 
   var
 
   var
 
     ScreenSegment: Word;
 
     ScreenSegment: Word;
  
  begin
+
  commencer
     if (Lo(LastMode) = 7) then        { Mono? }
+
     if (Lo (LastMode) = 7) alors {Mono? }
       ScreenSegment := $B000
+
       ScreenSegment: = $ B000
     else
+
     autre
       ScreenSegment := $B800;
+
       ScreenSegment: = $ B800;
     Move(@^ScreenData^,               { From pointer }
+
     Déplacer (@ ^ ScreenData ^, {} De pointeur
       Ptr(ScreenSegment, 0)^,         { To video memory }
+
       Ptr (ScreenSegment, 0) ^, {Pour mémoire vidéo}
       4000);                           { 80 * 25 * 2 }
+
       4000); {80 * 25 * 2}
   end;
+
   fin;
  
  var
+
  var
     MenuP : Pointer;
+
     MenuP: Pointer;
     MenuF : file;
+
     MenuF: fichier;
   begin
+
   commencer
     Assign(MenuF, 'MENU.DTA');       { Open screen data file }
+
     Attribuer (MenuF, 'MENU.DTA'); {Ouvrir fichier de données d'écran}
     Reset(MenuF, 1);
+
     Reset (MenuF, 1);
     GetMem(MenuP, 4000);             { Allocate buffer on heap }
+
     GetMem (MenuP, 4000); {Allouer tampon sur tas}
     BlockRead(MenuF, MenuP^, 4000);   { Read screen data }
+
     BlockRead (MenuF, MenuP ^, 4000); {Lire les données d'écran}
     Close(MenuF);
+
     Fermer (MenuF);
     ShowScreen(MenuP);               { Display screen }
+
     Showscreen (MenuP); { Écran d'affichage }
   end.
+
   fin.
  
The screen data file (MENU.DTA) is opened and then read into a buffer on
+
Le fichier de données de l'écran (MENU.DTA) est ouvert et ensuite lu dans une mémoire tampon sur le tas. Les deux monprog.exe et MENU.DTA doivent être présents au moment de l'exécution de ce programme fonctionne. Vous pouvez utiliser BINOBJ pour convertir MENU.DTA un fichier .OBJ (MENUDTA.OBJ) et lui dire d'associer les données avec une procédure appelée MenuData. Ensuite, vous pouvez déclarer la procédure externe faux MenuData, qui contient en fait les données d'écran. Une fois que vous liez dans le fichier .OBJ avec la directive de compilation $ L, MenuData sera 4000 octets de long et contiennent vos données d'écran. Tout d'abord, exécutez BINOBJ sur MENU.DTA:
the heap. Both MYPROG.EXE and MENU.DTA must be present at run-time for this
+
program to work. You can use BINOBJ to convert MENU.DTA to an .OBJ file
+
(MENUDTA.OBJ) and tell it to associate the data with a procedure called
+
MenuData. Then you can declare the fake external procedure MenuData, which
+
actually contains the screen data. Once you link in the .OBJ file with the
+
$L compiler directive, MenuData will be 4000 bytes long and contain your
+
screen data. First, run BINOBJ on MENU.DTA:
+
  
  binobj MENU.DTA MENUDTA MenuData
+
  binobj MENU.DTA MENUDTA MenuData
  
The first parameter, MENU.DTA, shows a familiar file of screen data; the
+
Le premier paramètre, MENU.DTA, montre un fichier familier de données d'écran; le second, MENUDTA, est le nom du fichier .OBJ à créer (puisque vous ne spécifiez pas une extension, OBJ sera ajouté). Le dernier paramètre, MenuData, est le nom de la procédure externe comme il sera déclaré dans votre progam. Maintenant que vous avez converti MENU.DTA à un fichier .OBJ, voici ce que la nouvelle MYPROG.PAS ressemble:
second, MENUDTA, is the name of the .OBJ file to be created (since you
+
didn't specify an extension, .OBJ will be added). The last parameter,
+
MenuData, is the name of the external procedure as it will be declared in
+
your progam. Now that you've converted MENU.DTA to an .OBJ file, here's
+
what the new MYPROG.PAS looks like:
+
  
  program MyProg;
+
  programme monprog;
  
  procedure ShowScreen(ScreenData : Pointer);
+
  procédure Showscreen (ScreenData: Pointer);
   { Display a screenful of data--no error checking! }
+
   {Affiche un plein écran des données - aucune vérification d'erreur! }
 
   var
 
   var
 
     ScreenSegment: Word;
 
     ScreenSegment: Word;
   begin
+
   commencer
     if (Lo(LastMode) = 7) then            { Mono? }
+
     if (Lo (LastMode) = 7) alors {Mono? }
       ScreenSegment := $B000
+
       ScreenSegment: = $ B000
     else
+
     autre
       ScreenSegment := $B800;
+
       ScreenSegment: = $ B800;
     Move(@^ScreenData^,                   { From pointer }
+
     Déplacer (@ ^ ScreenData ^, {} De pointeur
       Ptr(ScreenSegment, 0)^,               { To video memory }
+
       Ptr (ScreenSegment, 0) ^, {Pour mémoire vidéo}
       4000);                               { 80 * 25 * 2 }
+
       4000); {80 * 25 * 2}
   end;
+
   fin;
  
  procedure MenuData; external;
+
  procédure MenuData; externe;
   {$L MENUDTA.OBJ }
+
   {$ L MENUDTA.OBJ}
   begin
+
   commencer
     ShowScreen(@MenuData);                 { Display screen }
+
     Showscreen (@MenuData); { Écran d'affichage }
   end.
+
   fin.
  
Notice that ShowScreen didn't change at all, and that the ADDRESS of your
+
Notez que Showscreen n'a pas changé du tout, et que l'adresse de votre procédure est passée en utilisant l'opérateur @.
procedure is passed using the @ operator.
+

Version actuelle en date du 6 août 2016 à 23:09

Ce fichier décrit cinq programmes autonomes utilitaires qui viennent avec Turbo Pascal: TPUMOVER, MAKE, TOUCH, GREP et BINOBJ.

Utilisation de TPUMOVER[modifier | modifier le wikicode]

Lorsque vous écrivez des unités, vous voulez les rendre facilement accessibles à tous les programmes que vous développez. (Mystères de chapitre, "Unités et Mystères connexes», explique ce qu'est une unité est et raconte comment créer vos propres unités.) Nous allons maintenant vous montrer comment utiliser TPUMOVER pour éliminer les unités rarement utilisées de TURBO.TPL, et comment insérer des unités souvent utilisées dans TURBO.TPL.


 Un examen des dossiers Unité

Il existe deux types de fichiers de l'unité: les fichiers .TPU et fichiers .TPL. Lorsque vous compilez une unité, Turbo Pascal met le code objet résultant dans un fichier .TPU (Turbo Pascal Unit), qui contient toujours une unité exactement.

A .TPL (Turbo Pascal Library) fichier, d'autre part, peut contenir plusieurs unités. Par exemple, toutes les unités qui viennent sur votre disque Turbo Pascal sont dans le fichier TURBO.TPL. Le TURBO.TPL de fichier est actuellement le seul fichier de bibliothèque Turbo Pascal va charger des unités de.

Vous avez peut-être remarqué, cependant, que vous pouvez utiliser les unités standard Turbo Pascal sans donner un nom de fichier. En effet, ces unités sont stockées dans le fichier de l'unité standard Turbo Pascal - TURBO.TPL sur votre disque de distribution. Parce que les unités sont dans ce fichier, tout programme peut les utiliser sans «connaître» leur emplacement.

Supposons que vous ayez une unité appelée TOOLS.TPU, et vous l'utiliser dans de nombreux programmes différents. Bien que l'ajout d'outils pour TURBO.TPL prend mémoire (TURBO.TPL est automatiquement chargé en mémoire par le compilateur), l'ajouter à la bibliothèque résidente rend "en utilisant" Outils plus vite parce que l'unité est en mémoire plutôt que sur le disque.

Il y a cinq unités standard déjà contenues dans TURBO.TPL: System, Overlay, Printer, Crt, et Dos.

Utilisation de TPUMOVER[modifier | modifier le wikicode]

Vous pouvez utiliser plusieurs paramètres de ligne de commande qui vous permettent de manipuler les unités rapidement. La syntaxe de ces paramètres est

 opérations de nom de fichier TPUMOVER

où le nom de fichier est un fichier de .TPU ou un fichier .TPL, et opérations est une liste facultative d'un ou plusieurs des éléments suivants :

 + Unitname Ajouter une unité à la bibliothèque.
 - unitname Supprimer une unité de la bibliothèque.
 * Unitname Extrait d'une unité de la bibliothèque.

Si aucune opération sont spécifiées, TPUMOVER répertorie les unités dans le fichier de la bibliothèque ainsi que la taille et la dépendance des informations.

L'utilitaire MAKE[modifier | modifier le wikicode]

Contenu des Makefiles[modifier | modifier le wikicode]

Un makefile contient les définitions et les relations nécessaires pour aider à faire garder votre programme (s) à jour. Vous pouvez créer autant de makefiles que vous le souhaitez et les nommer ce que vous voulez. Si vous ne spécifiez pas de makefile lorsque vous exécutez MAKE (en utilisant l'option -f), puis MAKE recherche d'un fichier avec le nom par défaut MAKEFILE.

Vous créez un makefile avec un éditeur de texte ASCII, comme éditeur interactif intégré de Turbo Pascal. Toutes les règles, les définitions et directives se terminent par un retour chariot; si une ligne est trop longue, vous pouvez continuer à la ligne suivante en plaçant une barre oblique inverse (\) comme le dernier caractère de la ligne.

Whitespace - espaces et tabulations - est utilisé pour séparer les identificateurs adjacents (comme les dépendances) et aux commandes en retrait dans une règle.

Création d'un makefile est presque comme l'écriture d'un programme - avec des définitions, des commandes et des directives.

commentaires[modifier | modifier le wikicode]

Les commentaires commencent par un signe dièse (#); le reste de la ligne qui suit le # est ignorée par MAKE. Les commentaires peuvent être placés partout et n'ont pas à commencer dans une colonne particulière.

Règles explicites[modifier | modifier le wikicode]

Les règles explicites prennent la forme

 cible [cible ...]: [source source ...]
     [commande]
     [commande]
     ...

où la cible est le fichier à être mis à jour, la source est un fichier dont la cible dépend, et la commande est une commande valide MS-DOS (y compris l'invocation de fichiers .BAT et l'exécution des .COM et fichiers .EXE).

Des règles explicites définissent un ou plusieurs noms de cibles, zéro ou plusieurs fichiers source, et une liste facultative de commandes à exécuter. Les noms de cible et de fichiers source répertoriés dans des règles explicites peuvent contenir des disques et des répertoires spécifications MS-DOS normales, mais ils ne peuvent pas contenir des caractères génériques.

Syntaxe[modifier | modifier le wikicode]

ici est important. cible doit être au début d'une ligne (colonne 1), et chaque commande doit être en retrait (précédé d'au moins un caractère d'espace ou une tabulation). Comme mentionné précédemment, la barre oblique inverse (\) peut être utilisé comme un caractère de continuation si la liste des fichiers source ou une commande donnée est trop long pour une seule ligne. Enfin, aussi bien les fichiers source et les commandes sont facultatives; il est possible d'avoir une règle explicite consistant seulement

 cible [cible ...] suivi par deux points.

L'idée derrière une règle explicite est que la ou les commandes énumérées vont créer ou mettre à jour la cible, en utilisant habituellement les fichiers source. Lorsque MAKE rencontre une règle explicite, il vérifie d'abord pour voir si l'un des fichiers source sont des fichiers cibles ailleurs dans le makefile. Si oui, ces règles sont évaluées en premier.

Une fois que tous les fichiers source ont été créés ou mis à jour sur la base d'autres règles explicites (ou implicites), effectuer des contrôles pour voir si la cible existe. Sinon, chaque commande est invoquée dans l'ordre donné. Si existe cible, son heure et la date de la dernière modification sont comparées à l'heure et la date de chaque source. Si une source a été modifié plus récemment que la cible, la liste des commandes est exécutée.

Un nom de fichier donné peut se produire sur le côté gauche d'une règle explicite qu'une seule fois dans une exécution donnée de MAKE.

Chaque ligne de commande dans une règle explicite commence par des espaces. FAIS considère toutes les lignes suivantes une règle explicite pour faire partie de la liste de commandes pour cette règle, jusqu'à la ligne suivante qui commence dans la colonne 1 (sans aucun espace précédent) ou jusqu'à la fin du fichier. Les lignes vides sont ignorées.

Une règle explicite, sans lignes de commande suivante, il est traité un peu différemment d'une règle explicite avec les lignes de commande.

  • Si une règle explicite existe pour une cible avec des commandes, les seuls fichiers que la cible dépend sont ceux énumérés dans la règle explicite.
  • Si une règle explicite n'a pas les commandes, les objectifs dépendent des fichiers données dans la règle explicite, et ils dépendent également de tout fichier correspond à une règle implicite pour la cible.

Voici quelques exemples de règles explicites d'un makefile:

 myutil.obj: myutil.asm
    tasm myutil.asm, myutil.obj;
 myapp.exe: myapp.pas myglobal.tpu myutils.tpu
    tpc myapp / Tc: \ TP5 \ bin
  • La première règle explicite indique que MYUTIL.OBJ dépend MYUTIL.ASM, et que MYUTIL.OBJ est créé en exécutant la donnée commande TASM.
  • La deuxième règle stipule que MYAPP.EXE dépend MYAPP.PAS, MYGLOBAL.TPU et MYUTILS.TPU, et est créé par le TPC donné commander. (Le / T plus chemin nom dans ces exemples sera expliquée dans la suite)

Si vous réorganisez les règles afin que celui pour MYAPP.EXE vient en premier, suivi par les autres, make recompiler (ou réassembler) uniquement les fichiers qu'il doit afin de mettre à jour tout correctement. En effet, un MAKE sans cible sur la ligne de commande essaiera d'exécuter la première règle explicite qu'il trouve dans le makefile.

Règles implicites[modifier | modifier le wikicode]

Assurez-vous également vous permet de définir des règles implicites, qui sont des généralisations des règles explicites. Voici un exemple pour illustrer la relation entre les deux types. Considérez cette règle explicite du programme exemple précédent:

 myutil.obj: myutil.asm
    tasm myutil.asm, myutil.obj;

Cette règle est une commune, parce qu'il suit un principe général: Un fichier .OBJ dépend du fichier .ASM avec le même nom de fichier et est créé en exécutant TASM (Turbo Assember). En fait, vous pourriez avoir un makefile où vous avez plusieurs (ou même plusieurs dizaines) explicite les règles suivant ce même format.

En redéfinissant la règle explicite une règle implicite, vous pouvez éliminer toutes les règles explicites de la même forme. Comme une règle implicite, il ressemblerait à ceci:

 .asm.obj:
    tasm $ * EAM, de $ * obj..;

Cette règle signifie, "tout fichier se terminant par .OBJ dépend du fichier du même nom qui se termine dans .ASM, et le fichier .OBJ est créé en utilisant la commande

 tasm $ *. asm, $ *. obj

où $ * représente le nom du fichier sans extension. "(Le symbole $ * est une macro spéciale et est discuté dans la section suivante.)

La syntaxe d'une règle implicite suivante:

 .source_extension.target_extension:
    {commander}
    {commander}
    ...

Notez que les commandes sont facultatives et doivent être en retrait. Le source_extension (qui doit commencer en colonne 1) est l'extension du fichier source, qui est, il applique à tout fichier ayant le format

 fname.source_extension

De même, le target_extension se réfère au fichier

 fname.target_extension

où fname est le même pour les deux fichiers. En d'autres termes, cette règle implicite remplace toutes les règles explicites ayant le format

 fname.target_extension: fname.source_extension
    [commander]
    [commander]
    ...

pour tout fname.

Les règles implicites sont utilisées si aucune règle explicite pour une cible donnée peut être trouvée ou si une règle explicite avec aucune commande existe pour la cible.

L'extension du nom de fichier en question est utilisé pour déterminer quelle règle implicite à utiliser. La règle implicite est appliquée si un fichier est trouvé avec le même nom que la cible, mais avec l'extension de la source mentionnée. Par exemple, supposons que vous avez eu un makefile (nommé Makefile) dont le contenu était

 .asm.obj:
    tasm $ * EAM, de $ * obj..;

Si vous aviez une routine de langage assembleur nommé RATIO.ASM que vous vouliez compiler pour RATIO.OBJ, vous pouvez utiliser la commande

 faire ratio.obj

FAIRE prendrait RATIO.OBJ être la cible et créer en exécutant la commande:

 tasm ratio.asm, ratio.obj;

Les règles implicites sont également utilisés si une règle explicite est donnée à aucune commande. Supposons, comme mentionné précédemment, vous aviez la règle implicite suivante au début de votre makefile:

 .pas.tpu:
    tpc $ <

Vous pouvez ensuite réécrire certaines règles explicites comme suit:

 myglobal.tpu: myglobal.pas
  myutils.tpu: myutils.pas myglobal.tpu myutil.obj

Puisque vous ne disposez pas d'informations explicites sur la façon de créer ces fichiers .TPU, MAKE applique la règle implicite définie précédemment.

Plusieurs règles implicites peuvent être écrites avec la même extension de cible, mais une seule telle règle peut demander à la fois. Si plus d'une règle implicite existe pour une extension de cible donnée, chaque règle est vérifiée dans l'ordre les règles apparaissent dans le makefile, jusqu'à ce que toutes les règles applicables sont vérifiées.

MAKE utilise la première règle implicite qu'il découvre un fichier avec l'extension de la source. Même si les commandes de cette règle échouent, des règles plus implicites sont vérifiées.

Toutes les lignes suivantes une règle implicite sont considérés comme faisant partie de la liste de commande pour la règle, jusqu'à la ligne suivante qui commence sans espace ou à la fin du fichier. Les lignes vides sont ignorées. La syntaxe d'une ligne de commande est fournie plus loin dans cette annexe.

MAKE ne connaît pas le nom complet du fichier avec une règle implicite, comme il le fait avec des règles explicites. Pour cette raison, les macros spéciales sont fournies avec MAKE qui vous permettent d'inclure le nom du fichier en cours de construction par la règle.


 Listes de commandes

Les commandes dans une liste de commandes doivent être en retrait - qui est, précédée d'au moins un caractère ou un onglet d'espace - et prendre la forme

 [Prefix ...] command_body

Chaque ligne de commande dans une liste de commande se compose d'un (facultatif) liste des préfixes, suivi d'un corps de commandement unique.

Les préfixes autorisés dans une commande modifient le traitement de ces commandes par MAKE. Le préfixe est soit le au (@) signe ou un trait d'union (-) immédiatement suivi par un certain nombre.

 @ Maintient MAKE d'afficher la commande avant de l'exécuter.  le
      affichage est caché, même si l'option -s n'a pas été donnée sur la MAKE
      ligne de commande.  Ce préfixe applique uniquement à la commande sur laquelle elle
      apparaît.
 -num affecte la façon dont les codes traite de sortie FAIS.  Si un certain nombre (num) est
         fourni, puis faire sera interrompre le traitement que si l'état de sortie
         dépasse le nombre donné.  Dans cet exemple, MAKE annulerait seulement
         si l'état de sortie est supérieure à 4:
 -4 Myprog sample.x
 Si aucun préfixe -num est donnée, MAKE vérifie l'état de sortie pour le
         commander.  Si le statut est différent de zéro, MAKE va arrêter et supprimer le
         fichier cible en cours.
 - Avec un trait d'union, mais pas de numéro, MAKE ne sera pas vérifier l'état de sortie
      tout.  Indépendamment de ce que l'état de sortie était, MAKE continuera.

Le corps de la commande est traitée exactement comme si elle était entrée comme une ligne à COMMAND.COM, à l'exception que la redirection et les tuyaux ne sont pas pris en charge. MAKE exécute les commandes intégrées suivantes en invoquant une copie de COMMAND.COM pour les exécuter:

 BREAK CD CHDIR CLS COPY
  MD MKDIR PATH PROMPT REN
  RENAME SET TIME TYPE VER
  VÉRIFIER VOL

MAKE recherche pour tout autre nom de commande en utilisant l'algorithme de recherche MS-DOS:

 o Le répertoire courant est recherché en premier, suivi par chaque répertoire
    dans le chemin.
 o Dans chaque répertoire, d'abord un fichier avec l'extension .COM est cochée,
    puis un fichier .exe, et enfin un .BAT.
 o Si un fichier .BAT se trouve, une copie de COMMAND.COM est invoqué pour exécuter
    le fichier de commandes.


Cette commande fera MYPROG.PAS à être recherchées, en utilisant l'algorithme de recherche complète:

 tpc myprog.pas / $ B +, R +, I +


 Macros

Souvent, certaines commandes, les noms de fichiers, ou des options sont utilisés encore et encore dans votre makefile. Dans un exemple plus tôt dans la présente annexe, toutes les commandes de PTC utilisé le commutateur / Tc: \ TP5 \ bin, ce qui signifie que les fichiers TPC.CFG et TURBO.TPL sont dans le sous-répertoire C: \ TP5 \ BIN. Supposons que vous vouliez passer à un autre sous-répertoire pour ces fichiers; Qu'est-ce que tu ferais? Vous pouvez passer et modifier toutes les options / T, en insérant le nom de chemin approprié. Ou, vous pouvez définir une macro.

Une macro est un nom qui représente une certaine chaîne de caractères (lettres et chiffres). Une définition macro donne un nom de macro et le texte d'expansion; par la suite, lorsque MAKE rencontre le nom de la macro, il remplace le nom avec le texte d'expansion.

Supposons que vous avez défini la macro suivante au début de votre makefile:

 TURBO = c: \ TP5 \ bin

Vous avez défini la macro TURBO, ce qui équivaut à la chaîne c: \ TP5 \ bin. Vous pouvez maintenant réécrire le makefile comme suit:

 TURBO = c: \ TP5 \ bin
  myapp.exe: myapp.pas myglobal.tpu myutils.tpu
    tpc myapp / T $ (TURBO)
 myutils.tpu: myutils.pas myglobal.tpu myutil.obj
    myutils de tpc / T $ (TURBO)


Partout dans le répertoire Turbo est spécifié, vous utilisez la macro invocation $ (TURBO). Lorsque vous exécutez FAIS, $ (TURBO) est remplacé par le texte d'expansion, c: \ TP5.BIN. Le résultat est le même ensemble de commandes que vous aviez avant mais avec une plus grande flexibilité.

En fait, si vous laissez la première ligne tout à fait, vous pouvez spécifier le sous-répertoire que vous voulez à chaque fois que vous exécutez FAIS, en utilisant la -D (Définir) Option:

 faire -DTURBO = c: \ TP5 \ projet

définitions Macro prennent la forme

 macro_name = texte d'expansion

où macro_name est le nom d'une macro composée d'une chaîne de lettres et de chiffres sans espace en elle, même si vous pouvez avoir des espaces entre macro_name et le signe égal (=). [Texte d'extension] est une chaîne arbitraire contenant des lettres, des chiffres, des espaces et la ponctuation; il se termine par un retour chariot. Notez que les macros sont sensibles à la casse. Ainsi, les noms de macro Turbo, Turbo et TURBO sont tous différents.

Si macro_name a été préalablement définie, soit par une définition de macro dans le makefile ou par l'option -D sur la ligne de commande MAKE, la nouvelle définition remplace l'ancienne.

Les macros sont invoquées dans votre makefile avec le format

 $ (Macro_name)

Macros dans des macros: Macros ne peuvent pas être invoquées sur le (macro_name) côté gauche d'une définition de macro. Ils peuvent être utilisés sur le côté droit (texte d'extension), mais ils ne sont pas développées jusqu'à ce que la macro étant définie est invoquée. En d'autres termes, quand une macro invocation est étendu, toutes les macros intégrées dans son texte d'expansion sont également élargis.

FAIS est livré avec plusieurs macros prédéfinies spéciales intégré: $ d, $ *, $ <, $ :, $, et $ &.. La première est une macro de test défini, utilisé dans les directives conditionnelles si et elif!; les autres sont de noms de fichiers macros, utilisés dans des règles explicites et implicites. Les différents noms de fichiers macros fonctionnent de façon similaire, en élargissant à une certaine variation du nom de chemin complet du fichier en cours de construction. En outre, les chaînes d'environnement SET actuels sont automatiquement chargés comme des macros, et la macro __MAKE__ est définie à 1 (un).


 Macro d'essai définie ($ d)

Cette macro se développe à 1 si le nom de la macro donné est défini, ou à 0 si elle est pas. Le contenu du texte d'expansion de la macro n'a pas d'importance. Cette macro spéciale est autorisée uniquement dans! Directives si et! Elif. Par exemple, si vous vouliez modifier votre makefile afin qu'il utiliserait un répertoire particulier Turbo Pascal, si vous ne spécifiez pas un, vous pourriez mettre ceci au début de votre makefile:

 ! Si! $ D (TURBO) # si TURBO est pas défini
  TURBO = c: \ TP5 \ bin # définissent à C: \ TP5 \ BIN
 !fin si

Si vous appelez FAIRE avec la ligne de commande

 faire -DTURBO = c: \ TP5 \ projet

puis TURBO est défini comme c: \ TP5 \ projet. Toutefois, si vous venez invoquez MAKE par lui-même,

 faire

puis TURBO est défini comme c: \ TP5 \ bin, votre sous-répertoire "par défaut".


 Base de nom de fichier Macro ($ *)

Cette macro est autorisée dans les commandes pour une explicite ou une règle implicite. La macro se développe pour le nom du fichier en cours de construction, à l'exclusion de toute prolongation, comme ceci:

 Nom du fichier est A: \ P \ TESTFILE.PAS
  $ * Étend à A: \ P \ TESTFILE

Par exemple, vous pouvez modifier la règle MYAPP.EXE explicite déjà donné à ressembler à ceci:

 myapp.exe: myapp.pas myglobal.tpu myutils.tpu
    tpc $ * / T $ (TURBO)


 Nom complet du fichier Macro ($ <)

Le nom complet du fichier macro ($ <) est également utilisé dans les commandes d'une règle explicite ou implicite. Dans une règle explicite, $ <élargit le nom complet du fichier cible (y compris l'extension), comme ceci:

 Nom du fichier est A: \ P \ TESTFILE.PAS
  $ <Étend à A: \ P \ TESTFILE.PAS

Dans une règle implicite, $ <prend le nom du fichier ainsi que l'extension de la source. Par exemple, la règle implicite précédente

 .asm.obj:
    tasm $ * EAM, de $ * obj..;

peut être réécrite comme

 .asm.obj:
     tasm $ <, $ * obj.


 Nom du fichier Chemin Macro ($ :)

Cette macro se développe pour le chemin d'accès (sans le nom de fichier), comme ceci:

 Nom du fichier est A: \ P \ TESTFILE.PAS
  $: Étend à A: \ P \


 Nom de fichier et Macro Extension ($).

Cette macro se développe pour le nom du fichier, avec l'extension, comme ceci:

 Nom du fichier est A: \ P \ TESTFILE.PAS
  $.  étend à TESTFILE.PAS


 File Name Only Macro ($ &)

Cette macro se développe pour le nom de fichier uniquement, sans chemin d'accès ou l'extension, comme ceci:

 Nom du fichier est A: \ P \ TESTFILE.PAS
  $ Et étend à TESTFILE


 directives

La version de MAKE livré avec Turbo Pascal permet quelque chose que les autres versions de MAKE ne le font pas: directives conditionnelles semblable à ceux autorisés pour Turbo Pascal. Vous pouvez utiliser ces directives pour inclure d'autres makefiles, de rendre les règles et les commandes conditionnelles, pour imprimer les messages d'erreur, et à des macros "UNDEFINE".

Directives dans un makefile commencent par un point d'exclamation (!). Voici la liste complète des directives de MAKE:

  !comprendre
 !si
 !autre
 ! elif
 !fin si
 !Erreur
 ! undef

Une directive fichier-inclusion (! Include) spécifie un fichier à inclure dans le makefile pour l'interprétation au point de la directive. Il prend la forme suivante:

 ! Include "filename"

ou

 ! Include <filename>

Ces directives peuvent être imbriquées arbitrairement profonde. Si une directive include tente d'inclure un fichier qui a déjà été inclus dans un certain niveau externe de nidification (de sorte qu'une boucle de nidification est sur le point de commencer), y compris la directive interne est rejetée comme une erreur.

Les directives conditionnelles (! si! elif,! d'autre, et! endif) donner un programmeur une certaine souplesse dans la construction makefiles. Règles et macros peuvent être "conditionalized" de telle sorte que la définition de ligne de commande macro (en utilisant l'option -D) peut activer ou désactiver les sections du makefile.

Le format de ces directives parallèles, mais est plus étendue que, les directives conditionnelles permises par Turbo Pascal:

 ! Si l'expression
    [ lignes ]
 !fin si
 ! Si l'expression
    [ lignes ]
 !autre
    [ lignes ]
 !fin si
 ! Si l'expression
    [ lignes ]
 ! Elif expression
    [ lignes ]
 !fin si

Les directives conditionnelles forment un groupe, avec au moins un! Si directive commençant le groupe et une directive endif! Fermer le groupe.

L'expression a permis dans un! Si ou un! Elif directive utilise une syntaxe similaire à celle trouvée dans le langage de programmation C. L'expression est évaluée comme un entier signé expression simple 32 bits.

Les nombres peuvent être entrés en décimal, octal ou hexadécimal constantes. Par exemple, ceux-ci sont des constantes juridiques dans une expression:

 4536 # décimal constant
  0677 constant # octal (notez le zéro)
  0x23aF # constante hexadécimale

et l'un des opérateurs unaires suivants:

 - négation
  ~ Bit complément
 !  pas logique

Une expression peut utiliser l'un des opérateurs binaires suivants:

 + addition
  - soustraction
  * multiplication
  / division
 % restant
  >> Décalage à droite
  << Décalage à gauche
  & Bitwise et
  |  ou binaire
  ^ OR exclusif ou
  && Logique et
  ||  logique ou
  > Supérieur
  <Inférieur à
  > = Supérieur ou égal à
  <= Inférieur ou égal à
  == égalité
 ! = Inégalité

Une expression peut contenir l'opérateur ternaire suivant:

 ?  : L'opérande avant?  est traité comme un test.
 Si la valeur de cet opérande est non nul, alors la seconde
        opérande (la partie entre le? et le côlon) est le
        résultat.  Si la valeur du premier opérande est égal à zéro, la
        La valeur du résultat est la valeur du troisième opérande
        (La partie après le :).

Les parenthèses peuvent être utilisées pour des opérandes de groupe dans une expression. En l'absence de parenthèses, les opérateurs binaires sont regroupés en fonction de la même priorité donnée dans la langue de C.

Le regroupement est de gauche à droite pour les opérateurs de même priorité, à l'exception de l'opérateur ternaire (? :), Ce qui est de droite à gauche.

Les macros peuvent être invoquées dans une expression, et la macro $ d spéciale () est reconnu. Après toutes les macros ont été élargies, l'expression doit avoir la syntaxe correcte. Tous les mots dans l'expression élargie sont traités comme des erreurs.

La directive d'erreur (Erreur) les causes MAKE pour arrêter et imprimer un fatal diagnostic contenant le texte après erreur!. Il prend le format

 Erreur [any_text]

Cette directive est conçue pour être inclus dans les directives conditionnelles pour permettre à une condition d'interruption définie par l'utilisateur.

La directive undefine (! Undef) provoque une définition de la macro appelée à être oublié. Si la macro est actuellement undefined, cette directive n'a pas d'effet.

 Utilisation FAIRE

==

Vous savez maintenant beaucoup de choses sur la façon d'écrire makefiles; est maintenant le temps d'apprendre comment les utiliser avec MAKE. La façon la plus simple d'utiliser MAKE est de taper la commande

 FAIRE

à l'invite MS-DOS. FAIRE puis recherche MAKEFILE; si elle ne peut le trouver, il cherche MAKEFILE.MAK; si elle ne peut pas trouver cela, il arrête avec un message d'erreur.

Vous pouvez spécifier un fichier avec l'option -f:

 FAIRE -fstars.mak

La syntaxe générale pour MAKE est

 faire l'option cible l'option ... cible ...

où option est une option MAKE (voir plus loin) et la cible est le nom d'un fichier cible à traiter par des règles explicites.

Si la ligne de commande ne comprend pas les noms de cible, MAKE utilise le premier fichier cible mentionné dans une règle explicite. Si une ou plusieurs cibles sont mentionnés sur la ligne de commande, ils seront construits selon les besoins.

Voici quelques exemples de lignes de commande MAKE:

 faire -fstars.mak -n
  fait du
  faire -DTURBO -Iinclude = c: \ TP5 \ projet


 Le fichier BUILTINS.MAK

Comme vous familiariser avec MAKE, vous trouverez qu'il ya des macros et des règles (généralement des implicites) que vous utilisez encore et encore. Vous avez trois façons de les manipuler. D'abord, vous pouvez les mettre dans chaque makefile vous créez. Deuxièmement, vous pouvez les mettre tous dans un seul fichier et utiliser le! Inclut directive dans chaque Makefile vous créez. Troisièmement, vous pouvez les mettre tous dans un fichier nommé BUILTINS.MAK.

Chaque fois que vous exécutez MAKE, il recherche un fichier nommé BUILTINS.MAK; si elle trouve le fichier, MAKE le lit avant MAKEFILE manutention (ou le Makefile que vous voulez qu'il traite).

Le fichier BUILTINS.MAK est destiné à toutes les règles (généralement des règles implicites) ou des macros qui seront couramment utilisés dans les fichiers partout sur votre ordinateur.

Il n'y a aucune exigence que tout fichier BUILTINS.MAK existe. Si MAKE trouve un fichier BUILTINS.MAK, il interprète ce fichier en premier. Si MAKE ne peut pas trouver un fichier BUILTINS.MAK, il passe directement à interpréter MAKEFILE (ou quoi que makefile vous spécifiez).


 Comment faire des recherches pour les fichiers

FAIS recherchera BUILTINS.MAK dans le répertoire courant ou dans le répertoire exec si votre ordinateur fonctionne sous DOS 3.x. Vous devez placer ce fichier dans le même répertoire que le fichier MAKE.EXE.

FAIRE toujours recherches pour le makefile dans le répertoire en cours. Ce fichier contient les règles pour le fichier de programme exécutable particulier en cours de construction. Les deux fichiers ont des règles de syntaxe identiques.

FAIRE également des recherches pour tout! Inclure des fichiers dans le répertoire courant. Si vous utilisez le -I (Inclure) option, il sera également rechercher dans le répertoire spécifié.


 Faire des options de ligne de commande
 -Didentifier Définit l'identificateur nommé à la chaîne consistant en
                 le caractère unique 1.
 -Diden = Chaîne Définit l'iden identificateur nommé à la chaîne après
                 le signe égal.  La chaîne ne peut pas contenir d'espaces ou
                 onglets.
 MAKE -Idirectory va rechercher les fichiers à inclure dans l'indication
                 répertoire (ainsi que dans le répertoire courant).
 -Uidentifier Annule la définition des définitions précédentes du nom
                 identifiant.
 -s Normalement, FAIS imprime chaque commande car il est sur le point d'être
                 réalisé.  Avec l'option -s, pas de commandes sont imprimées
                 avant l'exécution.
 Causes -n MAKE pour imprimer les commandes, mais pas réellement
                 les exécuter.  Ceci est utile pour le débogage d'un makefile.
 -fnom de fichier Utilise le nom de fichier que le fichier MAKE.  Si le nom de fichier ne
                 existe et aucune extension est donnée, tente filename.MAK.
 -?  ou -h message d'aide.


 FAIRE Messages d'erreur
 Erreurs fatales

Je ne sais pas comment faire XXXXXXXX

 Ce message est émis lorsque MAKE rencontre un nom de fichier inexistant dans
  la séquence de construction, et aucune règle existe qui permettrait le nom de fichier
  être construit.

Erreur de directive: XXXX

 Ce message est émis lorsque MAKE traite une directive #error dans le
  fichier source.  Le texte de la directive est affiché dans le message.

Mauvaise argument de ligne de commande: XXX

 Cette erreur se produit si MAKE est exécuté avec incorrect en ligne de commande
  arguments.

Pas assez de mémoire

 Cette erreur se produit lorsque le stockage de travail total a été épuisé.  Toi
  devrait essayer ceci sur une machine avec plus de mémoire.  Si vous avez déjà 640K
  dans votre machine, vous pouvez avoir à simplifier le fichier source.

Impossible de commande d'exécution

 Ce message est émis après avoir tenté d'exécuter une commande.  cela pourrait
  être le résultat du fichier de commande ne sont pas trouvés, ou parce qu'il était
  mal orthographié.  Une possibilité moins probable est que la commande existe mais est
  en quelque sorte corrompu.

Impossible d'ouvrir le fichier makefile

 Ce message est émis lorsque le répertoire courant ne contient pas de
  fichier makefile nommé.


 les erreurs

Bad format de nom de fichier dans include

 Inclure les noms de fichiers doivent être entourés par des guillemets ou des crochets.  le
  nom de fichier était manquant la citation d'ouverture ou équerre.

syntaxe de l'instruction undef Bad

 Une déclaration undef! Doit contenir un identifiant unique et rien d'autre que
  le corps de la déclaration.

constante de caractères trop longue

 constantes de caractères peuvent être seulement un ou deux caractères.

Les arguments de commande trop long

 Les arguments d'une commande exécutée par MAKE étaient plus de 127
  caractères - une limite imposée par DOS.

erreur de syntaxe de commande

 Ce message se produit si
 o la première ligne de la règle du makefile contenait tout premier plan
       des espaces.
 o une règle implicite ne consistait pas en .ext.ext :.
 o une règle explicite ne contenait pas un nom avant le caractère:.
 oa macro définition ne contient pas de nom avant le caractère =.

Division par zéro

 Une fracture ou reste dans une! If a un diviseur de zéro.

Expression erreur de syntaxe dans! If

 L'expression dans une instruction if est mal formé - il contient un
  parenthèses correspondent pas, un opérateur supplémentaire ou manquant, ou d'un manque ou
  constante supplémentaire.

Nom de fichier trop long

 Le nom de fichier donné dans un! Inclut directive était trop long pour MAKE à
  processus.  noms de chemin du fichier dans MS-DOS ne doivent pas être plus de 78 caractères
  longue.

caractère illicite de la constante expression X

 FAIS rencontré un certain caractère non autorisé dans une expression constante.  Si
  le caractère est une lettre, cela indique un (probablement) mal orthographié
  identifiant.

chiffres octal illégal

 Une constante octale a été trouvé contenant un chiffre 8 ou 9.

l'expansion macro trop long

 Une macro ne peut pas étendre à plus de 4096 caractères.  Cette erreur souvent
  se produit si une macro se développe de manière récursive.  Une macro ne peut pas légalement
  étendre à lui-même.

Déclaration de elif Misplaced

 Une! Directive elif a été rencontrée sans correspondance! Si directive.

else Misplaced

 Une! Else directive a été rencontrée sans correspondance! Si directive.

instruction endif Misplaced

 Une directive endif! A été rencontrée sans correspondance! Si directive.

Aucun nom de fichier se terminant

 Le nom de fichier dans une instruction include manquait la bonne fermeture
  devis ou équerre.

Redéfinition de la cible XXXXXXXX

 Le fichier nommé se produit sur le côté gauche de plus d'un explicite
  Règle.

Impossible d'ouvrir le fichier include XXXXXXXXX.XXX

 Le fichier nommé n'a pu être trouvée.  Cela pourrait aussi être causé si un
  inclure fichier lui-même inclus.  Vérifiez si le fichier nommé existe.

Fin de fichier inattendue dans conditionnelle a commencé sur la ligne #

Le fichier source terminée avant MAKE rencontré une! Endif. Le endif! Était

 soit manquant ou mal orthographié.

Inconnu déclaration préprocesseur

UNE ! le caractère a été rencontré au début d'une ligne, et

 Nom de l'instruction suivante n'a pas été l'erreur, undef, si, elif, comprend, d'autre,
 ou endif.

L'utilitaire TOUCH[modifier | modifier le wikicode]

Il y a des moments où vous voulez forcer un fichier cible particulier être recompilés ou reconstruites, même si aucune modification n'a été apportée à ses sources. Une façon de le faire est d'utiliser l'utilitaire TOUCH inclus avec Turbo Pascal. TOUCH change la date et l'heure d'un ou plusieurs fichiers à la date et l'heure actuelle, ce qui rend "plus récent" que les fichiers qui en dépendent.

Pour forcer un fichier cible à reconstruire, "toucher" l'un des fichiers qui cible dépend. Pour toucher un fichier (ou fichiers), entrez

toucher filename [nom de fichier ...]

à l'invite DOS. TOUCH mettra alors à jour la date de création du fichier (s).

Une fois que vous faites cela, vous pouvez appeler MAKE pour reconstruire le fichier cible touché (s).

L'utilitaire GREP[modifier | modifier le wikicode]

GREP est un utilitaire de recherche puissant qui peut rechercher du texte dans plusieurs fichiers à la fois.

La syntaxe de ligne de commande pour GREP suit:

GREP [options] searchstring [filespec ...]

où les options se compose d'un ou plusieurs caractères simples précédés d'un trait d'union, searchstring définit le motif à rechercher, et filespec est la spécification de fichier. filespec dit GREP quels fichiers (ou groupes de fichiers) à la recherche; il peut être un nom de fichier explicite ou un nom de fichier générique intégrant les wildcards DOS (? et *). Vous pouvez également entrer un chemin dans le cadre de filespec; si vous utilisez filespec sans chemin, GREP recherche uniquement le répertoire en cours. Si vous ne spécifiez pas filespec, entrée GREP doit être spécifié en redirigeant stdin ou de la tuyauterie.


Les commutateurs GREP

Dans la ligne de commande, les options sont un ou plusieurs caractères simples précédés par un tiret (-). Chaque caractère individuel est un interrupteur que vous pouvez activer ou désactiver: tapez le symbole plus (+) après un caractère pour activer l'option, ou tapez un trait d'union (-) après le caractère à désactiver l'option.

La valeur par défaut est activé (+ est implicite): par exemple, -R signifie la même chose que -R +. Vous pouvez lister plusieurs options individuellement comme ceci: -I -D -L). Ou vous pouvez les combiner comme ceci: -ILD ou -IL -D, et ainsi de suite). Il est tout de même à GREP.

Voici une liste des commutateurs et leurs significations:

-C Count seulement: Seulement un nombre de lignes correspondant est imprimé.  Pour chaque
      fichier qui contient au moins une ligne de correspondance, GREP imprime le fichier
      nom et un décompte du nombre de lignes correspondant. Les lignes correspondantes
      ne sont pas imprimés.
Annuaires -D: Pour chaque filespec spécifié sur la ligne de commande, GREP
      recherches pour tous les fichiers qui correspondent à la spécification de fichier, à la fois dans
      le répertoire spécifié et dans tous les sous-répertoires du
      répertoire spécifié. Si vous donnez un filespec sans chemin, GREP
      suppose que les fichiers sont dans le répertoire courant.
-I Ignorer la casse: GREP ignore les différences supérieures / minuscules (cas
      pliant). GREP traite toutes les lettres az comme étant identique à la
      lettres correspondantes AZ dans toutes les situations.
Liste -L fichiers match: Seul le nom de chaque fichier contenant une correspondance est
       imprimé. Après GREP trouve une correspondance, il imprime le nom du fichier et
      le traitement se déplace immédiatement sur le fichier suivant.
Numbers -N: Chaque ligne de correspondance qui imprime GREP est précédée par sa
      numéro de ligne.
  format de sortie -O UNIX: Change le format de sortie de correspondance des lignes pour supporter plus facilement le style UNIX de la tuyauterie de ligne de commande.  Toutes les lignes de sortie sont précédés par le nom du fichier qui contenait la ligne correspondante. 
 -R Recherche d'expression régulière: Le texte défini par searchstring est
       traité comme une expression régulière plutôt que comme une chaîne littérale.
 -U Options de mise à jour: GREP combineront les options données sur la commande
       ligne avec ses options par défaut et les écrire dans le fichier GREP.COM
       que les nouveaux paramètres par défaut.  (En d'autres termes, GREP est auto-configuration.)
       Cette option vous permet d'adapter les paramètres de l'option par défaut
       votre propre goût.
 -V Non-correspondance: Seules les lignes non correspondantes sont imprimées.  Seules les lignes qui font
       pas contenir la chaîne de recherche sont considérés comme non-appariement
       lignes.
 -W Recherche par mot: Texte trouvé qui correspond à l'expression régulière sera
       être considéré comme un match que si le caractère immédiatement précédent
       et à la suite ne peut pas faire partie d'un mot.  Le caractère de texte par défaut
       ensemble comprend AZ, 9-0, et le soulignement (_).  Une autre forme de
       cette option vous permet de spécifier le jeu de caractères juridiques de mots.
       Sa forme est -W [set], où ensemble est un ensemble régulier valide d'expression
       définition.  Si les caractères alphabétiques sont utilisés pour définir l'ensemble,
       l'ensemble sera automatiquement défini pour contenir à la fois la partie supérieure et
       minuscules valeurs pour chaque lettre dans l'ensemble, quelle que soit la façon dont il
       est tapé, même si la recherche est sensible à la casse.  Si l'option -W est
       utilisé en combinaison avec l'option -U, la nouvelle série de juridique
       caractères est enregistré comme le jeu par défaut.
 -Z Verbose: GREP imprime le nom du fichier de chaque fichier recherché.  Chaque
       ligne correspondante est précédée par son numéro de ligne.  Un compte de correspondance
       lignes dans chaque fichier est donné, même si le nombre est égal à zéro.

Plusieurs de ces options sont en conflit direct avec l'autre. Dans ces cas, l'ordre suivant applique (la première est celle qui a priorité):

 -Z -L -C -N

Chaque apparition d'une option remplace la définition précédente: Son état reflète la façon dont vous définissez dernière. À un moment donné, chaque option ne peut être activée ou désactivée.

Vous pouvez installer votre réglage par défaut préféré pour chaque option dans GREP.COM avec l'option -U. Par exemple, si vous voulez GREP toujours faire une recherche détaillée (-Z), vous pouvez l'installer avec la commande suivante:

 GREP -U -Z


 Comment faire une recherche utilisant GREP

La valeur de searchstring définit le motif GREP va rechercher. Une chaîne de recherche peut être un (via le commutateur -R) ou une chaîne littérale. Dans les expressions régulières, les opérateurs régissent la recherche; chaînes littérales ont pas d'opérateurs.

Vous pouvez joindre la chaîne de recherche entre guillemets pour éviter les espaces et les onglets d'être traités comme des délimiteurs. Matches ne franchissent pas les limites de ligne (un match doit être contenu dans une seule ligne).

Lorsque le commutateur -R est utilisé, la chaîne de recherche est traitée comme une expression régulière (par opposition à une expression littérale), et les symboles suivants prennent des significations particulières:

 ^ Un caret au début de l'expression correspond au début
      d'une ligne.
 $ Un signe dollar à la fin de l'expression correspond à la fin
      d'une ligne.
 .  Une période correspond à tout caractère.
 * Une expression suivie d'un caractère générique astérisque correspond
      zéro ou plusieurs occurrences de cette expression: fo * matchs
      f, fo, foo, etc.
 + Une expression suivie d'un signe plus correspond à une ou plusieurs
      occurrences de cette expression: fo + correspond à fo, foo, etc.,
      mais pas f.
 [] Une chaîne entre crochets correspond à tout caractère dans
      cette chaîne, mais pas d'autres.  Si le premier caractère de la
      chaîne est un caret (^), l'expression correspond à tout
      caractère sauf les caractères de la chaîne.  Pour
      par exemple, [xyz] correspond à x, y et z, tandis que [^ xyz] correspond à un
      et b, mais pas x ou y.  Une gamme de caractères peut être
      spécifié par deux caractères séparés par un tiret (-).
      Ceux-ci peuvent être combinés pour former des expressions telles que [? A-ld-z]
      correspondre ?  et toute lettre, sauf c.
 \ La barre oblique inverse "caractère d'échappement" dit GREP à seach pour
      le caractère littéral qui le suit.  Par exemple, \.
      correspond à une période au lieu de caractère.
 Remarque: Quatre caractères (, +, * et?.) Ne pas avoir de spécial
  ce qui signifie quand il est utilisé dans un ensemble.  Le caractère ^ est traité seulement
  spécialement si elle suit immédiatement le début de l'ensemble
  (Qui est, immédiatement après le [).

Tout caractère ordinaire ne sont pas mentionnés dans cette liste correspond à ce caractère. Une concaténation d'expressions régulières est une expression régulière.


 Exemples d'utilisation GREP

Les exemples suivants supposent toutes les options par défaut désactivée.

Recherche cordes grep dirdemo.pas fonction -n

Trouve DIRDEMO.PAS du fichier:

 46 LessFunc = function (X, Y: DirPtr): Boolean;
           55 fonction NumStr (N, D: Integer): string;
           68 fonction LessName (X, Y: DirPtr): Boolean;
           73 fonction LessSize (X, Y: DirPtr): Boolean;
           78 fonction LessTime (X, Y: DirPtr): Boolean;

Remarques Constate toutes les fonctions dans le fichier DIRDEMO.PAS. Puis

 raconte GREP de faire précéder chaque ligne en correspondance avec sa ligne
           nombre.

Chaîne de recherche grep {$ \ dirdemo.pas

Trouve DIRDEMO.PAS du fichier:

 {$ I, S}
           {$ M 8192,8192,655360}
           {$ F +}
           {$ F-}

Remarques Trouve toutes les directives du compilateur dans DIRDEMO.PAS. Le \

 (Backslash) précédant le $ est nécessaire.  Sans ça,
           le $ indiquerait la fin de la ligne.  toutes les lignées
           avec {(accolade) comme le dernier caractère serait
           correspondre à ce modèle et être imprimé.

Chaîne de recherche grep -i "^ * fonction. *). * Vrai" * .pas

Trouve MCPARSER.PAS du fichier:

 fonction CellValue (Col, Rangée: Word): Real;
           fonction Parse (S: string; var Att: Word): Real;

Remarques Trouve toutes les lignes qui commencent par zéro ou plusieurs espaces

 suivi de la fonction de mot, suivi d'une chaîne
           de zéro ou plusieurs caractères, suivie d'une
           entre parenthèses, suivie d'une autre chaîne de zéro ou
           plusieurs caractères, suivi par le mot réel, et
           ignore le cas.  L'effet net est à la recherche de tous les
           fonctions renvoyant un réel.  Voyez si vous pouvez penser
           d'autres façons de le faire.
 Les guillemets doubles sont nécessaires en raison de l'espace
           dans la chaîne de motif.  Les citations disent DOS
           processeur de ligne de commande pour traiter l'intervenant
           personnages comme un seul argument.  Sans les citations,
           DOS pense que la chaîne de recherche est en fait deux
           arguments et GREP vont penser que tout ce qui suit
           ^ (Le caractère caret) fait référence aux noms de fichiers, et
           se plaignent
 Aucun correspondant: * FONCTION *) *...


L'utilitaire BINOBJ[modifier | modifier le wikicode]

Un programme utilitaire appelé BINOBJ.EXE a été ajouté pour convertir un fichier binaire (.BIN) en un fichier .OBJ de sorte qu'il peut être lié à un programme Turbo Pascal comme une «procédure». Ceci est utile si vous avez un fichier de données binaires qui doivent résider dans le segment de code ou est trop grand pour en faire un tableau de constantes typées. Par exemple, vous pouvez utiliser BINOBJ avec l'unité graphique pour lier le pilote graphique ou des fichiers de polices directement dans votre fichier .EXE. Ensuite, pour utiliser votre programme graphique, vous devez avoir seulement le fichier .EXE (voir l'exemple BGILINK.PAS).

BINOBJ comporte trois paramètres:

BINOBJ
 <destination [.OBJ]> <nom public>

où source est le fichier binaire pour convertir, la destination est le nom de l'OBJ à produire, et le nom public est le nom de la procédure telle qu'elle sera déclarée dans votre programme Turbo Pascal.

L'exemple suivant, la procédure Showscreen, prend un pointeur comme paramètre et déplace 4000 octets de données à la mémoire de l'écran. Le fichier appelé MENU.DTA contient l'image de l'écran du menu principal (80 * 25 * 2 = 4000 octets).

Voici une version simple (pas de contrôle d'erreur) de MYPROG.PAS:

  programme monprog;

  procédure Showscreen (var ScreenData: Pointer);
   {Affiche un plein écran des données - pas de contrôle d'erreur!  }
   var
     ScreenSegment: Word;

  commencer
     if (Lo (LastMode) = 7) alors {Mono?  }
       ScreenSegment: = $ B000
     autre
       ScreenSegment: = $ B800;
     Déplacer (@ ^ ScreenData ^, {} De pointeur
      Ptr (ScreenSegment, 0) ^, {Pour mémoire vidéo}
      4000);  {80 * 25 * 2}
   fin;

  var
     MenuP: Pointer;
     MenuF: fichier;
   commencer
     Attribuer (MenuF, 'MENU.DTA');  {Ouvrir fichier de données d'écran}
     Reset (MenuF, 1);
     GetMem (MenuP, 4000);  {Allouer tampon sur tas}
     BlockRead (MenuF, MenuP ^, 4000);  {Lire les données d'écran}
     Fermer (MenuF);
     Showscreen (MenuP);  { Écran d'affichage }
   fin.

Le fichier de données de l'écran (MENU.DTA) est ouvert et ensuite lu dans une mémoire tampon sur le tas. Les deux monprog.exe et MENU.DTA doivent être présents au moment de l'exécution de ce programme fonctionne. Vous pouvez utiliser BINOBJ pour convertir MENU.DTA un fichier .OBJ (MENUDTA.OBJ) et lui dire d'associer les données avec une procédure appelée MenuData. Ensuite, vous pouvez déclarer la procédure externe faux MenuData, qui contient en fait les données d'écran. Une fois que vous liez dans le fichier .OBJ avec la directive de compilation $ L, MenuData sera 4000 octets de long et contiennent vos données d'écran. Tout d'abord, exécutez BINOBJ sur MENU.DTA:

  binobj MENU.DTA MENUDTA MenuData

Le premier paramètre, MENU.DTA, montre un fichier familier de données d'écran; le second, MENUDTA, est le nom du fichier .OBJ à créer (puisque vous ne spécifiez pas une extension, OBJ sera ajouté). Le dernier paramètre, MenuData, est le nom de la procédure externe comme il sera déclaré dans votre progam. Maintenant que vous avez converti MENU.DTA à un fichier .OBJ, voici ce que la nouvelle MYPROG.PAS ressemble:

  programme monprog;

  procédure Showscreen (ScreenData: Pointer);
   {Affiche un plein écran des données - aucune vérification d'erreur!  }
   var
     ScreenSegment: Word;
   commencer
     if (Lo (LastMode) = 7) alors {Mono?  }
       ScreenSegment: = $ B000
     autre
       ScreenSegment: = $ B800;
     Déplacer (@ ^ ScreenData ^, {} De pointeur
      Ptr (ScreenSegment, 0) ^, {Pour mémoire vidéo}
      4000);  {80 * 25 * 2}
   fin;

  procédure MenuData;  externe;
   {$ L MENUDTA.OBJ}
   commencer
     Showscreen (@MenuData);  { Écran d'affichage }
   fin.

Notez que Showscreen n'a pas changé du tout, et que l'adresse de votre procédure est passée en utilisant l'opérateur @.