Bonjour.
Un travail pour mon école consiste à recoder un serveur FTP doté de commandes basiques (put/get/ls/cd/pwd). Pour faire plus clean j'ai unifié les fonctions, et ce sont le même fichier qui sert pour le client ou le serveur.
Malheureusement il y a une petite difficulté : les messages doivent s'afficher sur la sortie standard pour le client, et sur le socket pour le serveur.
Je me suis rappelé une astuce que j'avais vu en stage : la définition de macro dans le makefile (comme ça à la compile avec le makefile je défini le fd).
Malheuresement je ne parviens pas à l'appliquer dans le cas d'un MAkefile multi-cible, qui doit générer le client ET le serveur. Normalement l'option -D DEFINE se met dans les CFLAGS, mais dans ce cas je ne le peux, sinon elle s'applique également au serveur. Je fais suivre le Makefile :
Dans ce cas là ça ne fonctionne pas ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 STDSRC = func.c xfunc.c my_greps.c SRC = serveur.c $(STDSRC) SRC2 = client.c $(STDSRC) CC = gcc OBJ = $(SRC:.c=.o) OBJ2 = $(SRC2:.c=.o) CFLAGS = -W -Wall -pedantic -g EXEC = serveur client serveur : $(OBJ) @gcc $(OBJ) -o $@ $(LDFLAGS) client : $(OBJ2) @gcc $(OBJ2) -o $@ $(LDFLAGS) -DCLIENT
Par contre si tape :
gcc -DCLIENT client.c ... -o client, ça marche.
Merci d'avance.
Partager