Menu Fermer

Comment utiliser la commande make avec exemples

Sur Linux, lorsque l’on doit compiler un programme, on peut utiliser la commande make.
Celle-ci accepte de nombreuses options.

Dans ce tutoriel, je vous montre comment utiliser la commande make avec des exemples.

Comment utiliser la commande make avec exemples

La syntaxe de la commande make ?

La commande make compile différents et construit un exécutable final à partir des fichiers sources. L’objectif de make est d’automatiser la compilation des fichiers, ce qui rend le processus plus simple et moins long.
Pour cela, le développeur peut fournit un fichier Makefile qui donne les instructions de compilation à travers de règles.
La commande make peut utiliser un compilateur comme gcc pour compiler les sources.

La commande fonctionne avec n’importe quel langage de programmation, à condition que le compilateur puisse être exécuté avec une commande shell.

La syntaxe est la suivante :

make [ -f nom_fichier_make] [ options ] ... [ cibles ] ... 
CommandeDescription
-B--always-makeCompile inconditionnellement toutes les cibles
-d--debug[=FLAGS]  Imprime les informations de débogage
-C dir--directory=dir  Changes the directory before executing the Makefile
-f file--file=file--Makefile=FILE  Change le répertoire avant d’exécuter le Makefile
-i--ignore-errors  Ignore toutes les erreurs dans les commandes
-I dir--include-dir=dir  Spécifie un répertoire pour rechercher le Makefile spécifié
-j [jobs]--jobs[=jobs]  Spécifie le nombre de travaux à exécuter simultanément
-k--keep-going  Continue à exécuter make aussi longtemps que possible après avoir reçu une erreur
-l [load]--load-average[=load]  Spécifie qu’aucune nouvelle tâche ne doit être démarrée si d’autres tâches sont dans la file d’attente
-n--dry-run--just-print--recon  Imprime la sortie attendue sans exécuter make
-o file--old-file=file--assume-old=file  Garantit que make ne refait pas le fichier même s’il est plus ancien que les dépendances
-p--print-data-baseImprime la base de données produite après lecture du Makefile
-q--question  Active le mode Question, dans lequel make n’exécute aucune commande mais renvoie un état de sortie zéro si la cible est déjà compilée.
-r--no-builtin-rules  Élimine les règles implicites intégrées
-s--silent--quiet  Limite l’impression des commandes lorsqu’elles sont exécutées
-S--no-keep-going--stop  Arrête la commande “-k, –keep-going”
-t--touch  Toucher les fichiers (les marquer à jour sans vraiment les modifier) au lieu d’exécuter leurs commandes.
Ceci est utilisé pour prétendre que les commandes ont été exécutées, afin de tromper les invocations futures de make.
--trace  Trace la disposition de chaque cible
-W file--what-if=file--new-file=file--assume-new=file  Ignore le fait que le fichier cible a été modifié
--warn-undefined-variablesAvertit qu’une variable inconnue est référencée
Liste des commandes et options de la commande make

Comment utiliser la commande make avec exemples

Compiler un programme

Pour lancer la compilation d’un programme, utilisez la commande sans option.

Lorsque la commande make est exécutée dans un répertoire donné, elle localise le fichier makefile, trouve les cibles qui y sont spécifiées, et les utilise comme arguments. Les cibles dans un fichier makefile spécifient également leurs dépendances, et si aucune n’est spécifiée, le fichier make construit les dépendances et leur cible principale.

make

Installer les exécutables et binaires

Quand vous faites “make install”, le programme make prend les binaires de l’étape précédente et les copie dans des emplacements appropriés pour qu’ils soient accessibles.
Pour cela, il suit les règles dictées dans le fichier Makefile.
Contrairement à ce qui se passe sous Windows, l’installation ne nécessite que la copie de quelques bibliothèques et exécutables et il n’y a aucune exigence de registre en tant que telle. En bref, “make install” ne fait que copier les fichiers compilés dans des emplacements appropriés.

make install

make all

Lorsque vous faites quelque chose comme “make all”, le programme make exécute une règle nommée “all” à partir d’un fichier dans le répertoire courant nommé “Makefile”.
Cette règle appelle généralement le compilateur pour compiler un code source en binaires.
Puis make exécute “make install” pour installer les binaires dans le système.

make all

make clean : nettoyer le fichier Makefile

Lorsqu’un utilisateur lance make pour la première fois, la commande crée les fichiers objets et l’exécutable. Par conséquent, pour désencombrer le dossier source et nettoyer les fichiers objets, ajoutez la fonction clean au Makefile :

  • La cible propre sans dépendances – la cible est toujours considérée comme périmée et toujours exécutée
  • La commande rm – supprime les objets spécifiés
  • La partie *.o – correspond aux fichiers avec l’extension o et nettoie les fichiers objets et my_app

Pour nettoyer tous les fichiers d’objets :

make clean

make clean : supprimer tous les exécutables et fichiers .o

En utilisant la cible remove que nous avons créée dans le fichier makefile, nous pouvons l’invoquer en utilisant make pour supprimer tous les fichiers exécutables et *.o.

make remove

Exécuter make en mode debogage

Pour exécutez make en mode débogage pour afficher des informations supplémentaires sur le processus de compilation.
Exécutez make avec l’option -d pour afficher la sortie de débogage :

make -d

Exécuter make avec un autre fichier Makefile

Par défaut, make recherche un fichier appelé Makefile ou makefile dans le répertoire courant. Pour utiliser un autre fichier, exécutez :

make -f <nom fichier>

Par exemple si un Makefile est nommé mon_fichier, exécutez :

make -f mon_fichier

Compiler un programme depuis un autre répertoire

Pour compiler un programme depuis un autre répertoire, utilisez l’option -C en spécifiant le répertoire.
Par exemple pour compiler depuis /home/testdir :

make -C /home/testdir/