Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 ! smile

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 roll

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

SaggiBT a écrit :

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