Pourquoi Makefile?

Compiler les fichiers de code source peut être fatigant, en particulier lorsque vous devez inclure plusieurs fichiers source et taper la commande de compilation à chaque fois que vous devez compiler. Les makefiles sont la solution pour simplifier cette tâche.

Les makefiles sont des fichiers au format spécial qui aident à créer et à gérer les projets automatiquement.

Par exemple, supposons que nous ayons les fichiers source suivants.

  • main.cpp
  • hello.cpp
  • factorial.cpp
  • functions.h

main.cpp

Voici le code du fichier source main.cpp -

#include <iostream>

using namespace std;

#include "functions.h"

int main(){
   print_hello();
   cout << endl;
   cout << "The factorial of 5 is " << factorial(5) << endl;
   return 0;
}

hello.cpp

Le code donné ci-dessous est pour le fichier source hello.cpp -

#include <iostream>

using namespace std;

#include "functions.h"

void print_hello(){
   cout << "Hello World!";
}

factorial.cpp

Le code pour factorial.cpp est donné ci-dessous -

#include "functions.h"

int factorial(int n){
   
   if(n!=1){
      return(n * factorial(n-1));
   } else return 1;
}

functions.h

Ce qui suit est le code pour fnctions.h -

void print_hello();
int factorial(int n);

La manière la plus simple de compiler les fichiers et d'obtenir un exécutable consiste à exécuter la commande -

gcc  main.cpp hello.cpp factorial.cpp -o hello

Cette commande génère bonjour binaire. Dans cet exemple, nous n'avons que quatre fichiers et nous connaissons la séquence des appels de fonction. Par conséquent, il est possible de taper la commande ci-dessus et de préparer un binaire final.

Cependant, pour un grand projet où nous avons des milliers de fichiers de code source, il devient difficile de maintenir les versions binaires.

le makeLa commande vous permet de gérer de grands programmes ou des groupes de programmes. Lorsque vous commencez à écrire de grands programmes, vous remarquez que la recompilation de grands programmes prend plus de temps que la recompilation de programmes courts. De plus, vous remarquez que vous ne travaillez généralement que sur une petite section du programme (comme une seule fonction), et une grande partie du programme restant reste inchangée.

Dans la section suivante, nous verrons comment préparer un makefile pour notre projet.