Information

Author(s) François De Keersmaeker
Deadline No deadline
Submission limit No limitation

Sign in

Décomposition d'un programme en modules - Makefile

Soit le programme C définit par les 3 fichiers suivants:

main.c:

#include <stdlib.h>
#include <stdio.h>
#include "module_a.h"
#include "module_b.h"

extern char* str_a;
extern char* str_b;

void func_a() {
  printf("%s\n", str_a);
  printf("%s\n", str_b);
  func_c();
}

int main(int argc, char const *argv[]) {
  func_a();
  func_b();
  func_c();
  return EXIT_SUCCESS;
}

module_a.c:

#include "module_a.h"

char* str_a = "Bonjour";
static char* str_b = "Salut";

static void func_a() {
  printf("%s\n", str_b);
}

void func_b() {
  func_a();
}

static void func_c() {
  printf("Ciao");
}

module_b.c:

#include "module_b.h"

static char* str_a = "Coucou";
char* str_b = "Hello";

static void func_b() {
  static int a = 0;
  int b = 0;
  printf("%s (a = %d; b = %d)\n", str_a, a, b);
  a++;
  b++;
}

void func_c() {
  func_b();
}

Question 1: Makefile

Proposez un Makefile qui permette de compiler, simplement avec la commande make, ce programme en un exécutable nommé prog.

Attention: vérifiez que chaque ligne d'une règle commence bien par une indentation, et pas une série d'espaces.

Question 2: Make clean

Ajoutez une règle clean, permettant de supprimer tous les fichiers créés par la compiltion, dont l'exécutable, au Makefile de l'exercice précédent.

Soumettez le Makefile complet, pas uniquement la règle clean.

Attention: vérifiez que chaque ligne d'une règle commence bien par une indentation, et pas une série d'espaces.