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.

1 réponse

kilian Messages postés 8854 Statut Modérateur 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
pom
 
Merci !!

Pom
0