Pages : 1
#1 Le 17/03/2013, à 23:33
- SaggiBT
[Résolu] Difficultés avec Makefile
Bonsoir à tous,
Je rencontre quelques difficulté sur la rédaction d'un Makefile pour une application écrite en Langage C.
Si quelqu'un pouvait me venir en aide, je lui en serais très reconnaissant !
Voici l'arborescence du dossier :
Dossier
|_____include (dossier qui contient les *.h)
|_____objects (dossier qui contient les *.o)
|_____src_c (dossier qui contient les *.c)
TARGET = main
EXEC = programme
INCLUDE_PATH = include
SRC_PATH = src_c
OBJECTS_PATH = objects
CC = gcc
CCFLAGS = -Wall -ansi -pedantic -O
SRCS := $(shell find $(SRC_PATH)/ -name "*.c" -print)
INCLUDES := $(shell find $(INCLUDE_PATH)/ -name "*.h" -print)
OBJS := $(SRCS:$(SRC_PATH)/%.c=$(OBJECTS_PATH)/%.o)
all: $(OBJECTS_PATH)/$(TARGET).o $(OBJS)
$(CC) -o $(EXEC) $^
$(OBJECTS_PATH)/%.o: $(SRC_PATH)%.c
$(CC) $(CCFLAGS) -o $@ -c $< -I $(INCLUDE_PATH)/
clean:
rm -rf *~
rm -rf *.o
rm -rf $(EXEC)
.PHONY: clean
Merci à tous ceux qui passeront par ici !
Dernière modification par SaggiBT (Le 19/03/2013, à 10:07)
Hors ligne
#2 Le 18/03/2013, à 00:13
- mrlem
Re : [Résolu] Difficultés avec Makefile
Bonsoir,
Une petite description du problème précis que tu rencontres et de ce que tu as déjà essayé pour le résoudre ne serait certainement pas superflue.
Hors ligne
#3 Le 18/03/2013, à 18:47
- SaggiBT
Re : [Résolu] Difficultés avec Makefile
Bonsoir,
Avant tout, merci beaucoup pour ta réponse !
Je vais essayer de fournir d'avantages de précisions !
Ce Makefile est destiné à compiler un projet écrit en langage C.
Le script présente plusieurs problèmes :
* La cible clean ne fonctionne pas ! En effet, après avoir fait un
Prompt % make clean
dans un Terminal, il reste des fichiers *.o et *~
* Lorsque j'exécute
Prompt % make
, j'obtiens l'erreur suivant :
make: *** Pas de règle pour fabriquer la cible "objects/main.o", nécéssaire pour "all". Arrêt.
Je ne rencontre pas de problèmes lorsque je rédige un Makefile où l'on précise manuellement les fichiers, mais là, je sèche !
Si toi ou quelqu'un d'autre a des indications, je suis preneur !
A bientôt !
Hors ligne
#4 Le 18/03/2013, à 21:55
- telliam
Re : [Résolu] Difficultés avec Makefile
Il me semble que tu as oublié un /
$(OBJECTS_PATH)/%.o: $(SRC_PATH)/%.c
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
#5 Le 19/03/2013, à 01:13
- mrlem
Re : [Résolu] Difficultés avec Makefile
+1 pour le / : ça expliquerait bien l'erreur.
Pour ta target 'clean', il semble que tu te méprennes sur la manière dont le -r de la commande rm fonctionne. Cela efface bien recursivement, mais *sous* les répertoires qui matchent.
e.g.
rm -rf mon_rep # va supprimer mon_rep et tout son contenu
rm -rf *.o # va donc supprimer tout fichier ou répertoire terminant en .o, ainsi que son contenu
Pour parvenir à tes fins, voici au moins 3 options :
@rm -f $(OBJECTS_PATH)/*.o # si tu sais que tous tes fichiers sont à plat
find $(OBJECTS_PATH) -name "*.o" -exec rm -f "{}" \; # s'il peut y avoir des sous-répertoires, attention à n'oublier aucun caractère !
@rm -rf $(OBJECTS_PATH) # plus brutal - éviter de faire ça en root avec / comme OBJECT_PATH^^
Dernière modification par mrlem (Le 19/03/2013, à 01:14)
Hors ligne
#6 Le 19/03/2013, à 09:18
- SaggiBT
Re : [Résolu] Difficultés avec Makefile
Bonjour à vous deux,
Merci pour vos réponses !
Effectivement, le / manquant était la source du problème ! Pour le coup, je me sent un peu bête
Merci beaucoup mrlem pour tes précisions concernant la cible clean ! J'avais une mauvaise interprétation de l'option -r de rm !
Faut-il passer le sujet en résolu ?
Encore une fois, merci beaucoup et à bientôt !!
Hors ligne
#7 Le 19/03/2013, à 09:37
- mrlem
Re : [Résolu] Difficultés avec Makefile
Faut-il passer le sujet en résolu ?
Et bien si l'ensemble des problèmes que tu évoquais est résolu, ça paraîtrait indiqué en effet ^^ (ça facilite la vie quand on veux trouver un problème non-résolu à ce mettre sous la dent ;o)
Bonne journée !
Hors ligne