outil de création d'automatisation de projet make/Makefile

Table des matières

Concepts et relations make/Makefile

Utilisation de make/Makefie


 Les fichiers source d'un projet ne sont pas comptés, et ils sont placés dans plusieurs répertoires selon le type, la fonction et le module. Le makefile définit une série de règles pour spécifier quels fichiers doivent être compilés en premier, quels fichiers doivent être compilés plus tard , et quels fichiers doivent être recompilés. Compilation, et opérations fonctionnelles encore plus complexes L'avantage du makefile est - "compilation automatique". Une fois écrit, une seule commande make est nécessaire, et l'ensemble du projet est entièrement automatiquement compilé, ce qui améliore considérablement l'efficacité du développement de logiciels.

Concepts et relations make/Makefile

make est une commande et makefile est un fichier (sous le chemin source actuel).

Makefile est un outil de compilation automatisé construit autour de dépendances et de méthodes dépendantes .

La dépendance est comme la relation entre vous et votre père lorsque vous étiez étudiant. Vous dépendez de votre père pour vivre, mais le makefile ne peut pas simplement indiquer la dépendance lorsque vous l'utilisez. Vous appelez votre père, dites que vous êtes son fils, et puis raccroche le téléphone Perdu, ton père est aussi très confus, ne sait pas ce que tu veux faire, tu appelles ton père et dis que tu es son fils (relation de dépendance) et ensuite tu dois indiquer ce que tu veux faire ( méthode de dépendance), par exemple, vous voulez que votre père vous donne Vous payez les frais de subsistance, et l'acte de payer les frais de subsistance est une méthode dépendante. Ce n'est que lorsque la relation de dépendance et la méthode de dépendance sont présentes qu'une chose peut être accomplie et les frais de subsistance soient obtenus de votre père. La relation de dépendance et la méthode de dépendance se correspondent et doivent être la relation de dépendance et la méthode de dépendance correctes . Vous ne pouvez pas appeler votre père et lui demander de faire vos devoirs pour vous, et vous ne pouvez pas appeler le père de quelqu'un d'autre pour demander les frais de subsistance.

Utilisation de make/Makefie

Créer un fichier dans le répertoire courant, nommé makefile ou Makefile

 Ouvrir Makefile avec l'éditeur vim

Utilisez la commande make pour exécuter le Makefile

Le fichier test ci-dessus, qui dépend de test.o

                   test.o , qui dépend de test.s

                   test.s , qui dépend de test.i

                   test.i , qui dépend de test.c

Comment ça marche ?

  • make recherchera un fichier nommé "Makefile" ou "makefile" dans le répertoire courant.
  • S'il le trouve, il trouvera le premier fichier cible (target) dans le fichier. Dans l'exemple ci-dessus, il trouvera le fichier "test" et utilisera ce fichier comme fichier cible final.
  • Si le fichier de test n'existe pas, ou si l'heure de modification du fichier test.o dont dépend le test est plus récente que le fichier de test (peut être testé avec touch), alors il exécutera la commande définie ultérieurement pour générer le test document de dossier.
  • Si le fichier test.o dont dépend test n'existe pas, alors make trouvera la dépendance dont la cible est le fichier test.o dans le fichier courant, et s'il est trouvé, générera le fichier test.o selon cette règle. (C'est un peu comme un processus de pile)
  • Si vos fichiers c et h existent, make générera le fichier test.o, puis utilisera le fichier test.o pour déclarer la tâche ultime de make, qui consiste à exécuter le fichier test.
  • C'est la dépendance de l'ensemble de make, et make trouvera les dépendances des fichiers couche par couche jusqu'à ce que le premier fichier cible soit finalement compilé.
  • Dans le processus de recherche, s'il y a une erreur, telle que le dernier fichier dépendant est introuvable, alors make quittera directement et signalera une erreur, et make ignorera l'erreur de la commande définie ou l'échec de la compilation.
  • make ne se soucie que des dépendances des fichiers. Si les fichiers après les deux-points ne sont toujours pas là après avoir trouvé les dépendances, il ne sera pas exécuté.

Lorsque nous créons un projet, nous devons également nettoyer le projet, qui est également écrit dans le Makefile

 

 

 Comme clean, s'il n'est pas directement ou indirectement associé au premier fichier cible, alors les commandes définies derrière lui ne seront pas exécutées automatiquement, mais on peut afficher make to execute. Autrement dit, la commande - "make clean" pour effacer tous les fichiers cibles pour la recompilation. Mais généralement notre fichier cible propre, nous le définissons comme une pseudo-cible et le modifions avec .PHONY La particularité de la pseudo-cible est qu'elle est toujours exécutée . Il est possible de déclarer notre fichier objet de test comme pseudo-cible.

Nous avons constaté que lorsque nous exécutons make à plusieurs reprises, cela ne nous permet pas de l'exécuter à plusieurs reprises. L'ajout de la  modification .PHONY permet au fichier d'être toujours exécuté. La compilation est une tâche très chronophage, donc généralement seuls les fichiers mis à jour sont compilés. Si make est exécuté à plusieurs reprises et que les fichiers compilés ne sont pas mis à jour, make ne sera pas exécuté. Il est recommandé de ne pas ajouter .PHONY au fichier exécutable généré, car la compilation prend trop de temps et le projet de nettoyage peut être ajouté.

Lorsque nous compilons, nous avons d'abord le code source, puis le programme exécutable. L'heure de modification du code source est ultérieure. Si le programme exécutable est plus récent que l'heure de modification du code source, la commande make ne sera pas exécutée à nouveau . L'exécution de make dépend de l'heure de modification du code source et du programme exécutable.

.PHONY mettra à jour l'heure de modification du code source, de sorte que l'heure de modification du code source soit postérieure à celle du programme exécutable, afin que make puisse être exécuté tout le temps.

Je suppose que tu aimes

Origine blog.csdn.net/m0_55752775/article/details/129078264
conseillé
Classement