Makefile
pom
-
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.
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
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:
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
Pom