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

Linux Discussion :

Make : sources dans un sous-rep, objets dans un autre.


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 184
    Par défaut Make : sources dans un sous-rep, objets dans un autre.
    Bonjour,
    Je viens de rendre un peu plus propre l'arborescence d'un projet en C sur lequel je travaille et j'ai des difficultés pour réaliser mon makefile.
    L'arborescence est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    include
    src
        gps_frames.c
        main.c
        post_send.c
        sender.c
    obj
    Où include contient les headers, src les .c et obj doit contenir les .o qui seront utilisés pour créer l'exécutable main, situé à la racine.

    trève de bavardages, je poste le makefile, ce sera plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    CC=gcc
    CFLAGS=-W -Wall -std=c99 -Iinclude
    LDFLAGS=
    EXEC=main
    INC=include
    SRC_DIR=src
    OBJ_DIR=obj
    SRC=$(wildcard $(SRC_DIR)/*.c)
    OBJ=$(SRC:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
     
    all:$(EXEC)
     
    $(EXEC):$(OBJ)
    	$(CC) -o $@ $< $(LDFLAGS) $(CFLAGS)
     
    $(OBJ):
    	$(CC) -c $^ -o $@
     
    clean:
    	rm -f $(OBJ)
     
    mrproper:clean
    	rm -f $(EXEC)
     
    .PHONY:clean all mrproper
    Pour l'instant la règle $(OBJ) est bien sûr débile , mais c'est justement celle là que je n'arrive pas à écrire.
    Apparemment, $(OBJ): crée une règle par fichier objet, je voudrais qu'à chaque règle, la dépendance soit sur le fichier .c correspondant et ça, j'y arrive pas. J'ai essayé avec la variable $@ mais dès que j'essaye de la modifier, (par exemple avec patsubst) j'obtiens un résultat vide.

    Par exemple pour la règle obj/gps_frames.o, je voudrais créer une dépendance en remplaçant obj ($(OBJ)) par src ($(SRC)) et .o par .c ce qui doit donner obj/gps_frames.o:src/gps_frames.c.

    Ça doit bien être possible, mais p****n je me casse les dents dessus !!!

    Merci d'avance !

    PS: Bien sûr je pourrai créer chaque règle à la main, mais le projet va pas mal évoluer, il risque d'y avoir pas mal de fichiers sources et je voudrai que tout soit facilement maintenable.

    [Edit] J'ai eu beaucoup de mal à savoir où poster, et je ne suis pas convaincu que cette section soit la meilleure, n'hésitez pas à déplacer si je me suis planté ! Merci.

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 31
    Par défaut
    Bonjour

    si tu remplaces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $(OBJ):
    	$(CC) -c $^ -o $@
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    obj/%o: src/%c
            $(CC) -c $< $(CFLAGS) -o $@
    Cela convient ?

    Je ne sais pas si c'est la bonne solution. Mais j'ai du coup mis un de mes projets en arborescence comme toi. Et, de cette manière, ça marche.

    Ma source d'inspiration...

    A toi de dire

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 184
    Par défaut
    Mon sauveur !

    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sous Delphi savoir dans Autocad si un objet est dans un polygone
    Par laventure dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 29/06/2008, 22h11
  2. [POO] POO et Objet dans une sous fonction
    Par JaKoo dans le forum Langage
    Réponses: 2
    Dernier message: 02/05/2008, 03h42
  3. [VBA-E]Y-a-t-il des fichiers dans les sous-rep de mon rep ?
    Par Kaiba dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2007, 22h28
  4. Acces aux objets dans un sous-formulaire
    Par Destiny dans le forum Access
    Réponses: 3
    Dernier message: 13/02/2007, 08h28
  5. Chemin d'accès des fichiers dans des sous rep
    Par Le Veilleur dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/11/2004, 14h37

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