J'ai lu quelques tutoriels concernant Makefiles mais pour moi, il n'est toujours pas clair pour ce que la cible "tout" représente et ce qu'elle fait.Que signifie "tout" dans un fichier makefile?
Des idées?
J'ai lu quelques tutoriels concernant Makefiles mais pour moi, il n'est toujours pas clair pour ce que la cible "tout" représente et ce qu'elle fait.Que signifie "tout" dans un fichier makefile?
Des idées?
Une construction, comme Makefile le comprend, comprend beaucoup de cibles. Par exemple, pour construire un projet que vous pourriez avoir besoin
Si vous avez implémenté ce flux de travail avec makefile, vous pouvez faire chacun des objectifs separatel y. Par exemple, si vous avez écrit
make file1.o
il construira uniquement ce fichier, si nécessaire. Le nom de all
n'est pas corrigé. C'est juste un nom conventionnel; all
cible indique que si vous l'appelez, make va construire tous ce qui est nécessaire pour faire une compilation complète. C'est généralement une cible fictive, qui ne crée aucun fichier, mais dépend simplement des autres fichiers. Pour l'exemple ci-dessus, la construction tous les nécessaires est la construction d'exécutables, les autres fichiers étant tirés en tant que dépendances. Ainsi, dans le makefile, il ressemble à ceci:
all: executable1 executable2
all
est habituellement le premier dans le makefile, car si vous écrivez juste make
dans la ligne de commande, sans spécifier la cible, il va construire la première cible. Et vous vous attendez à ce que ce soit all
.
all
est généralement aussi une cible .PHONY
. En savoir plus here.
Vous ne savez pas si cela correspond à quelque chose de spécial. C'est juste une convention que vous fournissez une règle «tout», et généralement il est utilisé pour lister toutes les sous-cibles nécessaires pour construire le projet entier, d'où le nom «tout». La seule chose spéciale à ce sujet est que souvent les gens la placent comme première cible dans le makefile, ce qui signifie que le fait de taper 'make' seul fera la même chose que 'make all'.
La cible "tout" est un exemple de cible fictive - il n'y a rien sur le disque appelé "tout". Cela signifie que lorsque vous faites un "make all", faites toujours penser qu'il a besoin de le construire, et ainsi exécute toutes les commandes pour cette cible. Ces commandes seront généralement celles qui construisent tous les produits finaux que le fichier makefile connaît, mais il pourrait faire n'importe quoi.
D'autres exemples de cibles factices sont «propre» et «install», et fonctionnent de la même manière.
Si vous ne l'avez pas encore lu, vous devriez lire le GNU Make Manual, qui est aussi un excellent tutoriel.
Le manuel pour GNU Make donne une définition claire pour all
dans son list of standard targets.
Si l'auteur du Makefile suit cette convention alors la cible all
devrait:
make
devrait faire la même chose que make all
.Pour atteindre une all
est généralement définie comme une cible .PHONY
qui dépend de l'exécutable (s) qui forment l'ensemble du programme:
.PHONY : all
all : executable
Pour atteindre 2 all
doit être soit la première cible définie dans le fichier make ou être assigné comme objectif par défaut:
.DEFAULT_GOAL := all
Et n'oubliez pas Mr.Proper (accessoirement mrproper) et distclean ... – t0mm13b