NewbieContest

Divers => Linux => Discussion démarrée par: The-Snake le 13 Novembre 2008 à 23:24:55



Titre: Makefile avec règle SRC:.o=.c
Posté par: The-Snake le 13 Novembre 2008 à 23:24:55
 =D Bonsoir tout le monde !

Voilà mon problème.
J'ai passé mon après-midi a écrire un programme et j'ai le plaisir d'annoncer qu'il marche très bien et compile sans warning. Le problème, c'est que là ou je suis, dans nos Makefile nous devons mettre une règle OBJ sous la forme :

OBJ = $(SRC:.o=.c)

Et quand la règle all dépend de celle-ci, plus rien ne va... à partir de ce moment là, mes fichiers headers ne sont plus inclus...
Et comme j'aime faire un code beau et propre, j'aime bien regrouper toutes les déclarations dans seulement quelques fichiers. Je ne peux donc pas y renoncer.

Voici mon Makefile :
Citation
NAME    =       bsq
CC      =       gcc
CFLAGS  =       -W -Wall -ansi -pedantic
SRC     =       main.c \
                build_tab.c \
                find_square.c \
                my_functions.c \
                draw_tab.c
HEADERS =       -I./headers/
OBJ     =       $(SRC:.c=.o)
RM      =       rm -rf

all: $(OBJ)
        $(CC) $(CFLAGS) -o $(NAME) $(SRC) $(HEADERS)

fclean:
        $(RM) *.o

clean:  fclean
        $(RM) bsq

.phony: all clean fclean
(pour ceux qui connaissent, OUI c'est la BSQ et oui il m'a fallut toute une après-midi pour la faire... m'apprendra à faire la fête toute la nuit...)

Je pense que ce sera pas bien grave si je rend un Makefile sans règle OBJ, mais comme je vais devoir écrire encore maints et maints Makefile, j'aimerais bien comprendre qu'est-ce qui ne va pas et pourquoi


Titre: Re : Makefile avec règle SRC:.o=.c
Posté par: lemulot le 15 Novembre 2008 à 15:03:22
Bon un (tres bon) tuto sur le Makefile, tu vas sur http://www.epitech-lyon.fr/wiki/index.php5/Makefile (http://www.epitech-lyon.fr/wiki/index.php5/Makefile).
Merci Epitech Lyon  :lol:

sinon il te manque:

Code:
.c.o:
     $(CC) $(CFLAGS) -c  $< -o $@


Titre: Re : Makefile avec règle SRC:.o=.c
Posté par: sirk390 le 16 Novembre 2008 à 20:41:42
Citation
all: $(OBJ)
        $(CC) $(CFLAGS) -o $(NAME) $(SRC) $(HEADERS)

Ton makefile marche surement mais il est quand meme buggé (les .o sont complilé et après on ne s'en sert plus).
Ca serait plutot ceci:

all: $(OBJ) $(HEADERS)
        $(CC) $(CFLAGS) -o $(NAME) $(OBJ)


Titre: Re : Makefile avec règle SRC:.o=.c
Posté par: The-Snake le 17 Novembre 2008 à 18:25:26
Un wiki o_o ! Roh vous déchirez du côté de Lyon !

Merci à vous !