IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Systèmes de compilation Discussion :

[Makefile] Faciliter l'écriture des chemins


Sujet :

Systèmes de compilation

  1. #1
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut [Makefile] Faciliter l'écriture des chemins
    Salut,

    Je suis sur un projet qui contient environ une 50aine de sources et le makefile doit pouvoir produire tous les executable qui le composent. Pour qu'on y voit clair apres avoir compilé, j'ai deja fait en sorte que les fichiers objets soient mis dans un sousrepertoire du projet, sauf que je m'aperçois que c'est un peu lourdingue : je dois ecrire une variable pour chaque fichier objet à produire sinon ça serait encore plus lourd à écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    OBJDIR = obj
    .....
     
    MONMODULE_O = $(OBJDIR)/monmodule.o
    $(MONMODULE_O) : monmodule.c monmodule.h header1.h header2.h
        gcc $(CFLAGS) -c monmodule.c -o $(MONMODULE_O)
    A ce stade c'est pas encore trop crado, mais y a t il une meilleure solution? Sachant que ceci va se repeter pour chaque source (avec differentes dependances).
    J'ai bien noté la technique du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %.o: %.c
    	@$(CC) -o $@ -c $< $(CFLAGS)
    .. mais mes modules.o ne dependent pas que de leur .c et dependent rarement des memes headers.

    Maintenant, j'aimerais creer un systeme de versions, une version qu'on passerait en parametre en appelant make, ex "make monprogramme VERSION=pouet". J'aurais une variable pour le chemin des sources, une pour les objets, et une pour les executables. Chemins qui seraient valorisés en fonction de la version

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ifeq($(VERSION),)
        VERSIONDIR = .
    else
        VERSIONDIR = $(VERSION)
    endif
    OBJDIR = $(VERSIONDIR)/obj
    SRCDIR = $(VERSIONDIR)/
    BINDIR = $(VERSIONDIR)/
    Le probleme c'est que ça devient carrement lourd pour ecrire le chemin des sources à compiler et surtout à mettre en dependances

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MONMODULE_O = $(OBJDIR)/monmodule.o
    $(MONMODULE_O) : $(SRCDIR)/monmodule.c $(SRCDIR)/monmodule.h $(SRCDIR)/header1.h $(SRCDIR)/header2.h
        gcc $(CFLAGS) -c $(SRCDIR)/monmodule.c -o $(MONMODULE_O)
    Alors, une idée pour arranger ça?
    Merci

  2. #2
    Membre éprouvé
    Inscrit en
    Novembre 2002
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 120
    Par défaut
    %.o: %.c
    @$(CC) -o $@ -c $< $(CFLAGS)
    Tu ne peux pas utiliser ça à cause du problème des dépendances, c'est ça?
    Dans ce cas, regarde http://make.paulandlesley.org/autodep.html, ça peut peut-être t'aider.

    Pour l'instant j'utilise cette règle là:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CFLAGS = -fno-builtin -g -Werror -pedantic -ansi -O3 -I../inc
     
    .SUFFIXES:
    .SUFFIXES: .c .o
    %.o: %.c
    	$(CC) -c -MD $(CFLAGS) -o $@ $<
    	@cp $*.d $*.P; \
    		sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
    				-e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $*.p; \
    		rm -f $*.d

  3. #3
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut


    Ca a l'air bourrin
    Enfin, merci

Discussions similaires

  1. différence d'écriture des comparasisons
    Par oranoutan dans le forum Langage
    Réponses: 6
    Dernier message: 27/12/2005, 15h44
  2. [C#] Accès à des chemins particuliers
    Par mbibim63 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 20/10/2005, 15h30
  3. Réponses: 4
    Dernier message: 17/10/2005, 14h23
  4. Gestion des chemins des images avec une base de données...
    Par Nean dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/07/2005, 08h08
  5. Ajouter des chemins dans la variable PATH
    Par Righetto Dominique dans le forum Linux
    Réponses: 7
    Dernier message: 21/03/2004, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo