Problème création d'un makefile

pagoda Messages postés 14 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 17 décembre 2012 - 19 avril 2010 à 17:58
pagoda Messages postés 14 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 17 décembre 2012 - 20 avril 2010 à 11:32
Bonjour, j'ai un souci sur un projet que je dois faire au plus vite, je dois faire un makefile permettant de créer un exécutable du projet, seulement voila mes sources sont organisées comme suit:
-le dossier de mon projet "ProjetC" contient le fichier Makefile et le dossier "sources"
-le dossier "sources" contient un sous-dossier "fichiers.c" et un sous-dossier "fichiers.h"
-pour faire un test j'ai mis dans le sous-dossier "fichiers.h" le fichier source "personnes.h" et dans le sous-dossier "fichiers.c" les fichiers "personnes.c" et "main.c" utilisant "personne.h"

-j'ai donc créer un Makefile permettant de créer un ficher exec des trois scripts "personnes.h", "personnes.c" et "main.c":

CFLAGS=-Wall -ansi

exec : personnes.o main.o
gcc $(CFLAGS) -o personnes.o main.o

personnes.o: personnes.c
gcc -c $(CFLAGS) ./sources/fichiers.c/personnes.c

main.o: main.c personnes.h
gcc -c $(CFLAGS) ./sources/fichiers.c/main.c



seulement quand j'exécute la commande "make -f ./Makefile"

on m'envoie comme message d'erreur: "make -f ./Makefile
make: *** Pas de règle pour fabriquer la cible « personnes.c », nécessaire pour « personnes.o ». Arrêt."

Je ne comprend pas trop ce que je dois faire car c'est la première fois que j'éssai de faire un makefile.

Est-ce quelqu'un pourrait m'apporter son aide ?
Merci d'avance.
A voir également:

6 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
19 avril 2010 à 19:26
Place plutôt tes headers dans un répertoire nommé include (fais comme tout le monde). Logiquement un makefile comme ça devrait aller (utilise make all pour le lancer) :
CFLAGS = -Wall -ansi
OBJETS = personnes.o main.o

all: personnes.o main.o
gcc -o programme $(OBJETS)
chmod +x programme

personnes.o:
gcc -c $(CFLAGS) -o personnes.o personnes.c

main.o:
gcc -c $(CFLAGS) -o main.o main.c

---
VB.NET is good ... VB6 is better
0
pagoda Messages postés 14 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 17 décembre 2012
19 avril 2010 à 19:42
Je viens de faire ce que tu m'as indiqué, le message suivant s'affiche:

gcc -c -Wall -ansi -o personnes.o ./sources/fichiers.c/personnes.c
gcc -c -Wall -ansi -o main.o ./sources/fichiers.c/main.c
gcc -o programme personnes.o main.o
chmod +x programme
make: Rien à faire pour « Makefile ».

Je ne sais pas si le fait qu'il m'affiche "make: Rien à faire pour « Makefile »." est normal toujours est-il que l'executable "programme" est crée et se lance correctement.

Je te remercie de ton aide
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
19 avril 2010 à 20:19
Renomme comme je t'ai dis tes répertoires (un répertoire portant le nom du programme contenant les fichiers source et un sous-répertoire include contenant les headers) et place le makefile dans le répertoire du programme. Tu peux y ajouter le target clean qui te permettra de supprimer les fichiers objets :
clean:
rm $(OBJETS)

---
VB.NET is good ... VB6 is better
0
pagoda Messages postés 14 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 17 décembre 2012
19 avril 2010 à 21:42
Je viens de le faire, ça marche aussi quand le renomme les dossiers des .h en "headers". Je fait make -f ./Makefile et tout marche niquel.
Manque plus qu'un petit script shell et tout sera niquel

Merci encore.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
19 avril 2010 à 23:03
Le nom communément utilisé est include. Autant faire comme les pros !
---
VB.NET is good ... VB6 is better
0
pagoda Messages postés 14 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 17 décembre 2012
20 avril 2010 à 11:32
Je le sais bien. Seulement mes profs tiennent absolument à ce qu'on le nomme "headers". Pas besoin de chercher la logique quand il n'y en a pas
Mais c'est évident que quand j'irai bosser il y a certaines choses abérantes que j'oublierai fissa.
0
Rejoignez-nous