logo Homepage
+  NewbieContest
|-+  Divers» Linux» Makefile avec règle SRC:.o=.c
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: Makefile avec règle SRC:.o=.c  (Lu 7680 fois)
The-Snake

Profil challenge

Classement : 9207/54283

Membre Junior
**
Hors ligne Hors ligne
Messages: 78


Voir le profil
« le: 13 Novembre 2008 à 23:24:55 »

  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
« Dernière édition: 13 Novembre 2008 à 23:56:37 par The-Snake » Journalisée
lemulot

Profil challenge

Classement : 6039/54283

Néophyte
*
Hors ligne Hors ligne
Messages: 34

{EPITECH.}


Voir le profil
« #1 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.
Merci Epitech Lyon 

sinon il te manque:

Code:
.c.o:
     $(CC) $(CFLAGS) -c  $< -o $@
Journalisée
sirk390
Beta testeur

Profil challenge

Classement : 1/54283

Membre Junior
*
Hors ligne Hors ligne
Messages: 92

Sirk390


Voir le profil WWW
« #2 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)
Journalisée

Trop cool NC!
The-Snake

Profil challenge

Classement : 9207/54283

Membre Junior
**
Hors ligne Hors ligne
Messages: 78


Voir le profil
« #3 le: 17 Novembre 2008 à 18:25:26 »

Un wiki o_o ! Roh vous déchirez du côté de Lyon !

Merci à vous !
Journalisée
Pages: [1]
  Imprimer  
 
Aller à: