Content-type: text/html
Manpage of MAKEDEPEND
MAKEDEPEND
Section: User Commands (1)
Updated: makedepend 1.0.0
Index
Return to Main Contents
NOM
makedepend - créer les dépendances dans les fichiers makefile
SYNOPSIS
makedepend
[
-Dname=def
] [
-Dname
] [
-Iincludedir
] [
-Yincludedir
] [
-a
] [
-fmakefile
] [
-include file
] [
-oobjsuffix
] [
-pobjprefix
] [
-sstring
] [
-wwidth
] [
-v
] [
-m
] [
--
otheroptions
--
]
sourcefile
...
DESCRIPTION
Le programme
makedepend
lit chaque
fichier source
à la file et les analyse comme un préprocesseur C,
traitant toutes les instructions
#include,
#define,
#undef,
#ifdef,
#ifndef,
#endif,
#if,
#elif
et
#else
de telle façon qu'il peut correctement dire quelles instructions
#include
peuvent être utilisées lors d'une compilation.
Chaque instruction
#include,
peut référencer des fichiers ayant d'autres instructions
#include
et l'analyse se produira aussi dans ces fichiers.
Tout fichier qui inclut un
fichier source,
directement ou indirectement,
est ce que
makedepend
appelle une dépendance.
Ces dépendances sont ensuite écrites dans un fichier
makefile
de telle façon que
make(1)
connaîtra quel fichier d'exécution doit être recompilé quand une dépendance a changé.
Par défaut,
makedepend
les place en sortie dans un fichier nommé
makefile
s'il existe, sinon
Makefile.
Un makefile alternatif peut être spécifié avec l'option
-f.
Il cherche d'abord dans le makefile la ligne
# DO NOT DELETE THIS LINE -- make depend depends on it.
ou une fournie par l'option
-s,
comme une limite pour la sortie de dépendances.
S'il la trouve, il supprimera tout ce qui suit
jusqu'à la fin du fichier makefile et mettra la sortie après cette ligne.
S'il ne la trouve pas, le programme joindra la chaîne de caractères
à la fin du makefile et placera la sortie après.
Pour chaque
fichier source
apparaissant sur la ligne de commande,
makedepend
place les lignes dans le makefile de la forme
sourcefile.o: dfile ...
Où sourcefile.o est le nom de la ligne de commande
avec son suffixe remplacé par ``.o'',
et dfile est une dépendance trouvée dans une instruction
#include
pendant l'analyse des
fichiers sources
ou un des fichiers qu'il inclut.
EXEMPLE
Normalement,
makedepend
sera utilisé dans un fichier makefile cible. Donc la commande ``make depend''
apportera les nouvelles dépendances pour le makefile.
Par exemple,
SRCS = file1.c file2.c ...
CFLAGS = -O -DHACK -I../foobar -xyz
depend:
makedepend -- $(CFLAGS) -- $(SRCS)
OPTIONS
Le programme ignorera toute option qu'il ne comprend pas. Donc,
vous pouvez utiliser les mêmes arguments que vous utilisez pour
cc(1).
- -Dname=def or -Dname
-
Definir.
Ceci place une définition pour le
nom
dans la table de symboles de
makedepend.
Sans
=def
le symbole est définit par ``1''.
- -Iincludedir
-
Inclure un répertoire.
Cette option indique au
makedepend
d'ajouter
includedir
à sa liste de répertoires pour chercher quand
elle rencontre une instruction
#include.
Par defaut,
makedepend
recherche seulement les répertoires standard inclus
(habituellement /usr/include et possiblement un répertoire dépendant du compilateur.
- -Yincludedir
-
Remplace tous les répertoires standard inclus par le seul
répertoire inclus spécifié ; vous pouvez omettre le
includedir
simplement pour éviter la recherche des répertoires standard inclus.
- -a
-
Joint les dépendances à la fin du fichier au lieu de les remplacer.
- -fmakefile
-
Nom de fichier.
Ceci vous permet de spécifier un fichier makefile alternatif dans lequel
makedepend
peut placer sa sortie.
Specifier ``-'' comme nom de fichier (i.e., -f-) envoie la
sortie à la sortie standard au lieu de modifier un fichier existant.
- -include file
-
Traite le fichier comme entrée, et inclut toutes les sorties
résultantes avant de traiter le fichier d'entrée courant. Ceci
a le même effet que si le fichier spécifié est une déclaration
de include qui apparaît avant la toute première ligne de fichier
d'entrée régulier.
- -oobjsuffix
-
Suffixe de fichier d'exécution.
Certains systèmes peuvent avoir des fichiers objets dont le suffixe
est différent de ``.o''.
Cette option permet de specifier un autre suffixe, comme
``.b'' avec
-o.b
ou ``:obj''
avec
-o:obj
et ainsi de suite.
- -pobjprefix
-
Prefixe de fichier d'exécution.
Le prefixe est ajouté au début du nom du fichier d'exécution.
Ceci est habituellement utilisé pour indiquer un dossier différent
pour le fichier d'execution. Par défaut, la chaîne de caractères vide.
- -sstring
-
Commencer le délimiteur de chaîne de caractères.
Cette option vous permet de spécifier
une chaîne de caractères pour
makedepend
pour le chercher dans le makefile.
- -wwidth
-
Largeur de ligne.
Normalement,
makedepend
s'assurera que chaque ligne de sortie qu'il écrit ne dépasse pas 78
caractères pour la lisibilité. Cette option vous permet de changer
cette largeur.
- -v
-
Opération bavarde.
Cette option fait émettre par
makedepend
la liste des fichiers inclus par chaque fichier d'entrée.
- -m
-
Avertissement sur l'inclusion multiple.
Cette option fait produire par
makedepend
un avertissement si un fichier d'entrée inclut un autre fichier
plus d'une fois. Dans les versions précédentes de
makedepend
c'était le comportement par défaut ; la valeur par défaut a été changée pour égaler le
comportement du compilateur C, qui ne considère pas l'inclusion multiple
comme une erreur. Cette option est fournie pour assurer la compatibilité
avec les versions antérieures, pour aider aux problèmes de debogage liés à
l'inclusion multiple.
- -- options --
-
Si
makedepend
rencontre un double trait d'union (--) dans la liste d'arguments,
tout argument non reconnu qui le suit sera silencieusement ignoré ; un second
double trait d'union termine ce traitement spécial.
Dans ce cas,
makedepend
peut être utilisé pour ignorer surement les arguments ésotériques du
compilateur qui pourraient être normalement trouvés dans un CFLAGS
font
la macro (voir la
EXEMPLE
section ci-dessus).
Toutes les options que
makedepend
reconnaît et qui apparaissent entre la paire de doubles traits d'union sont
traitées normalement.
ALGORITHME
L'approche utlisée dans ce programme lui permet d'exécuter un ordre de
grandeur plus rapidement que n'importe quel autre ``générateur de
dépendance'' que j'ai jamais vu.
Au coeur de cette performance il y a deux suppositions :
tous les fichiers compilés par un seul fichier makefile seront compilés à peu
près pareil avec les options
-I
et
-D;
et la plupart des fichiers dans un seul dossier incluront largement les
mêmes fichiers.
Avec ces suppositions,
makedepend
s'attend à être appelé une fois pour chaque makefile,
avec tous les fichiers sources qui sont maintenus par le makefile
qui apparaissent dans la ligne de commandes.
Il analyse chaque source et inclut les fichiers exactement une fois,
maintenant une table de symboles interne pour chaque source.
Ainsi, le premier fichier de la ligne de commandes prendra un laps de temps
proportionnel au temps que prend un préprocesseur C.
Mais sur les dossiers suivants, s'il rencontre un fichier inclus qu'il a déjà
analysé, il ne le réanalyse pas.
Par exemple,
imaginez que vous compilez deux fichiers,
file1.c
et
file2.c,
ils incluent chacun le fichier en-tête
header.h,
et le fichier
header.h
inclus alternativement les fichiers
def1.h
et
def2.h.
Quand vous exécutez la commande
makedepend file1.c file2.c
makedepend
analysera
file1.c
et en conséquence,
header.h
et après
def1.h
et
def2.h.
Il décide ensuite que les dépendences pour ces fichiers sont
file1.o: header.h def1.h def2.h
Mais quand le programme analyse
file2.c
et découvre qu'il inclut aussi
header.h,
il n'analyse pas le fichier,
mais ajoute simplement
header.h,
def1.h
et
def2.h
à la liste de dépendances pour
file2.o.
VOIR AUSSI
cc(1), make(1)
BUGS
makedepend
analyse, mais n'évalue pas, le SVR4 # l'expression du préprocesseur de
predicat(token-liste); on considère simplement que de telles expressions
sont vraies.
Ceci peut entraîner l'évaluation de la mauvaise instruction
#include.
Imaginez que vous analysiez deux fichiers,
disons
file1.c
et
file2.c,
chacun incluant le fichier
def.h.
La liste de fichiers que
def.h
inclut peut vraiment être différente quand
def.h
est inclus par
file1.c
et quand il est inclus par
file2.c.
Mais une fois que
makedepend
arrive à la liste de dépendances pour un fichier,
il est moulé en béton.
AUTHEUR
Todd Brunhoff, Tektronix, Inc. and MIT Project Athena
TRADUCTION
Ce document est une traduction, réalisée par Clarisse Ducoux le 26 avril 2007.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité.
La version anglaise la plus à jour de ce document est toujours consultable via la commande : LANGUAGE=en man makedepend
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- EXEMPLE
-
- OPTIONS
-
- ALGORITHME
-
- VOIR AUSSI
-
- BUGS
-
- AUTHEUR
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 20:22:31 GMT, May 03, 2007