Qu'est-ce qu'un 'make target'?
Pourquoi ai-je besoin de faire un make target
avant d'être en mesure de construire mon code source?
Plus précisément, qu'est-ce que faire de cible exactement?
source d'informationauteur Lazer
Vous devez vous connecter pour publier un commentaire.
Makefiles ressembler à ceci:
Cela signifie que, lorsque vous tapez
make all
(le raccourci est juste de tapermake
), il fera en sorte que le mybinary de la cible ou le fichier est à jour. Pour ce faire, il doit s'assurer que mybinary est plus récente que celle de tous les fichiers.o il.o dépend.o et sur.o. Si non, alors il utilise le shell de commandes spécifié sur la ligne suivante pour construire mybinary. Mais avant de faire cela, il fait d'abord assurez-vous que les fichiers.o et ainsi de suite jusqu'à ce jour. Cela signifie qu'ils doivent être plus récents que les fichiers.c et les fichiers.h. Si non, alors il utilise le shell de commandes spécifié sur la ligne suivante pour construire des fichiers.o. Une fois que tous les *.o les fichiers sont à jour, il peut construire mybinary. Une fois mybinary est construit, l'ensemble de la cible est satisfait.Les cibles sont généralement seulement les fichiers. Le format d'un bloc est la suivante:
Cibles peuvent également être spécifié à l'aide de caractères génériques, par exemple
%.c
signifie que dans le shell que vous souhaitez appeler*.c
.Certains objectifs sont "bidon" cibles qui signifie qu'ils ne correspondent pas à un véritable fichier. La cible "all" est de ce genre. C'est aussi le "propre" de la cible (
make clean
). Et ainsi de suite. Vous n'avez pas vraiment besoin ou si vous voulez construire un fichier appelé "tous" ou "propre". Il existe différentes façons de spécifier qu'une cible est faux.La première cible à apparaître dans le fichier Makefile est celui qui sera appelé si vous tapez simplement
make
. Une convention est au nom de cette cible "all". Alorsmake
sera le même quemake all
.Un make cible " est en fait un fichier que vous souhaitez reconstruit.
Ne peuvent pas divine, ce que vous voulez construit, de sorte que vous avez à dire, implicitement ou explicitement, ce qu'il doit construire. Souvent, la première cible dans le fichier est un nom tel que "tous" et si vous avez exécuté la commande "make", sans aucune cible explicite, il va construire la première cible répertoriés dans le fichier makefile. Toutefois, certains fichiers makefile ne spécifiez pas de cible; ensuite, vous devez spécifier l'un sur la ligne de commande. Ou, si vous ne voulez pas la cible par défaut construit, vous devez spécifier la cible que vous voulez construire.
Une cible peut également être "faux", selon les termes de la GNU make. C'est, c'est un nom qui n'existe pas, et les règles ne créent pas d'elle, mais il (le faux cible) dépend d'un certain nombre d'autres fichiers qui ont des règles qui leur sont associés. En effet, le "tout" de la cible est généralement un faux cible, il n'y a pas un fichier appelé "tous" dans la plupart des répertoires.
Un
makefile
comprendra habituellement de code pour rendre votre programme, installez votre programme, à nettoyer par la suite, et d'autres choses.donc le mot
target
pourraient être différents mots-clés, tels queall
install
clean
etc.C'est une façon de dire que faire quelque chose.
make all
implique tout fairemake
est une commune du développement de l'outil, qui vérifie les dates de fichier entre les fichiers de code source et le code objet produit à partir d'eux, et compile le seul où la source est plus récente. Il le fait par l'utilisation d'un fichier appelé makefile, qui liste les fichiers qui doivent être comparés.La syntaxe standard est
make /f makefile myprog.exe
Qui dit que pour construire myprog.exe à l'aide de la liste de fichiers dans le makefile. Le makefile par défaut
makefile.mak
donc, si vous utilisez ce nom, vous n'avez pas à spécifier sur la ligne de commande.myprog.exe
ici est appelée la cible. Un truc, c'est que vous pouvez mettre dans le fichier makefile une liste d'instructions pour un non-existant fichier. Si vous puis dire pour construire cette cible, il va exécuter ces commandes. Souvent, vous verrez quelque chose commemake clean
qui a de fichiers temporaires supprimés.