Makefile

pom -  
 pom -
Bonjour, j'aimerais me faire un makefile pour compiler mon programme C. Dans ce makefile, j'aimerais appeler d'autres fichiers C qui sont dans les répertoires : les fichiers fichier1.c et fichier2.c dans path/repertoire1 et fichier3.c dans path/rep2

Mon main ce situe dans le fichier main.c du répertoire nommé prgm et il appelle aussi le fichier fonctions.c qui est dans ce même répertoire prgm.

J'ai vu qu'il y a l'option -I pour inclure les fichies et l'option -L pour la librairie. Mais je ne vois pas du tout comment m'en servire.

Voici ce que j'ai commencé à faire :

# Fichiers sources
SRC= fonctions.c main.c

# Fichiers objets le .c est remplace par un .o
OBJ=$(SRC:.c=.o)
# Executable
BIN= out
# Regles de compilation:
all: $(BIN)

$(BIN): $(OBJ)
gcc -o $(BIN) $(OBJ)

.SUFFIXES: .c .o

.c.o:
gcc -Wall -g -O2 -c $< -o $@

#je pense qu'à la ligne ci-dessus je dois mettre l'option -I. Mais comment fonctionne-t-elle ?

clean:
rm -rf $(BIN) $(OBJ) *~

Merci beaucoup.
Configuration: Suse Pro 9.3

1 réponse

  1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Non en fait l'option -I c'est pour indiquer ou se trouvent les fichiers d'en-tête (juste les *.h).

    Pour compiler les fichiers source en fichier objet, il faut mettre leurs chemins complet.
    Genre:
    CFILES= prgrm/main.c \
                     prgrm/fonctions.c \
                     path/repertoire1/fichier1.c \
                     path/repertoire1/fichier2.c \
                     path/rep2/fichier3.c
    OBJECTS=prgrm/main.o \
                     prgrm/fonctions.o \
                     path/repertoire1/fichier1.o \
                     path/repertoire1/fichier2.o \
                     path/rep2/fichier3.o
    
    objects:
           gcc -c $(CFILES)
    
    all:
           objects
           gcc $(OBJECTS) -o out
    0
    1. pom
       
      Merci !!

      Pom
      0