Makefile

Mmh35 -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Je débute en C, et j'ai un petit problème avec mon make, il me met

Pas de règle pour fabriquer la cible "test2.c", necessaire pour "test2.o". Arret.

Voici mon fichier makefiles :
all : test2.o
gcc obj/test2.o -o bin/test2

test2.o : test2.c
gcc -c src/test2.c -o obj/test2.o

Comme vous l'aurez surement compris, j'ai 3 répertoires sous la racine du répertoire du makefiles et les différents fichiers doivent être stockés dedans...
J'ai bien mis la tabulation.
Seul le fichier ./src/test2.c existe.

<config>Debian</config>

2 réponses

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut Mmh35,

    Si j'ai bien compris ce que tu veux faire, essaye comme cela :

    CFLAGS=-Wall -g  
    
    all: test2  
    
    test2.o:  
        gcc -o obj/test2.o -c src/test2.c  
    
    test2: test2.o  
        gcc -o bin/test2 obj/test2.o

    Cela met le .o dans obj/, l'exécutable dans bin/, le fichier .c étant dans src/

    Dal
    2
  2. Mmh35
     
    Merci Dal

    Et si je veux mettre plusieurs compilations dans le même makefile, je met à la suite

    all : test3
    ........


    ?
    0
    1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      Je ne comprend pas bien ta question.

      Si tu as plusieurs exécutables à créer, tu peux les mettre dans "all:", séparés par des espaces.

      all: test2 test3

      Il faudra que le Makefile gère les dépendances de la création de chacun des exécutables.

      Pour éviter d'avoir à taper tous les noms de fichiers, tu peux utiliser des "pattern rules", ou utiliser des fonctions de substitution, pour dire, par exemple, au compilateur comment produire des fichiers .o à partir de tous les fichiers .c, et comment utiliser tous les fichiers .o pour produire un exécutable.

      Vois la documentation de GNU Make et ses exemples:

      http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Pattern-Examples.html#Pattern-Examples
      http://www.gnu.org/savannah-checkouts/gnu/make/manual/html_node/Text-Functions.html#Text-Functions


      Dal
      0