Utilisation de Makefile SVP

Phil -  
 eric -
Bonjour tout le mode.
SVP j'ai besoin de l'aide concernant un travail que je fais (Programme de chat)pour cela j'ai créer quelques fichiers (Client.c, server.c, principale.h. principal.x,multicast.h, Makefile).
Voici le code de Makefile que j'ai :
ifeq ($(HOST), arabica)
CC = cc
MAKE = gmake
FLAGS =
LIBS = -lnsl
SERVER = serveur_sun
CLIENT = client_sun
else
CC = gcc
MAKE = make
FLAGS = -Wall
LIBS = -lm
SERVER = serveur
CLIENT = client
endif

PROGS = client server

CFLAGS = -DDEBUG -Wall

feux.h feux_clnt.c feux_svc.c feux_xdr.c:
feux.x rpcgen -C feux.x

feux_clnt.o:
feux_clnt.c feux.h

feux_svc.o:
feux_svc.c feux.h

client:
feux.h client.o feux_clnt.o feux_xdr.o
${CC} ${CFLAGS} -o ${CLIENT} client.o feux_clnt.o feux_xdr.o \
${LIBS}

server:
feux.h server.o feux_svc.o feux_xdr.o
${CC} ${CFLAGS} -o ${SERVER} server.o feux_svc.o feux_xdr.o \
${LIBS}

clean:
rm -f *.o *_clnt.c *_svc.c *_xdr.c feux.h

ma question est la suivante : Comment je peux compiler et executer tous ces fichiers en utilisant le makefile ???

Merci d'avance de votre aide.

2 réponses

phoenix
 
tu fais make nomDuProg et hop c parti (enfin sous linux c comme ca apres sous win j'en sais rien)mais si c en C ton prog a premier vue oui, sous linux le makefile "fait tout seul" pour le C, tu tape direct make nomDeAppli et il compile le tout
0
eric
 
Bonjours,

Dans un fichier makefile, ce qui se trouve entre le début d'une ligne et le symbôle ":" est appelé une "target" ou cible en bon français. Dans ton cas, tu as 6 targets:
- feux.h feux_clnt.c feux_svc.c feux_xdr.c
- feux_clnt.o
- feux_svc.o
- client
- server
- clean

Les trois premières sont des targets intermédiaires, c'est à dire qu'elles ne produisent pas quelque chose de directement utilisable, mais qui sera utilisé par un autre cible.
Les trois dernières sont de targets finales.

Ensuite, derrière le ":" tu as les dépendances. Par exemple, pour pouvoir "faire" (make) la target "feux_svc.o", tu as d'abord besoin du résultat des targets "feux_svc.c" et "feux.h" que le programme make va appeler automatiquement.

Enfin, vient ce qu'il faut faire pour la cible en question. C'est par exemple la ligne " ${CC} ${CFLAGS} -o ${CLIENT} client.o feux_clnt.o feux_xdr.o ${LIBS}", la compilation proprement dite.

Donc pour répondre à ta question, tu as le choix entre
make server
make client
make clean
ou une combinaison comme "make server client".

Par contre, il n'est pas question d'exécuter un programme avec make.

a+

eric
0