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

Autres éditeurs Discussion :

Question de Makefile


Sujet :

Autres éditeurs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Par défaut Question de Makefile
    Bonjour,

    ce n'est pas une question C mais de Makefile. Voici ma problématique :

    J'ai un répertoire A avec un nombre n de fichier dedant. Un script, ayant un fichier de configuration, transforme ces fichiers du répertoire A et mets les résultats dans un répertoire B (nom de fichiers identiques, fichiers texte, sans extensions).

    Je voudrais à travers un Makefile faire gérer les dépendance. J'entend par là que si je ne change qu'1 fichier du repertoire A il ne regénère que ce fichier dans le repertoire B. Si je modifie le fichier de config du script, il regène tous les fichiers.

    Je ne maitrise pas trop les Makefile, j'espère deja que ce que je veux faire est possible et est correctement exprimé ...

    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Par défaut
    Salut !

    Ce que tu veux faire est possible ! Heureusement d'ailleurs !
    Tu devrais jeter un oeil au tutoriel sur cette page :

    http://gl.developpez.com/tutoriel/outil/makefile/

    Ca devrait te donner un bon point de départ. Pour la récursivité il existe plusieurs solutions. Moi j'ai la mienne, mais elle ne me satisfait pas vraiment. Ce n'est pas ce qu'il y a de plus propre, mais ça fonctionne

    Il y a bien sur la solution d'utiliser les outils autoconf, automake, qui là te genereront tout bien propre, mais plus lourd à mettre en place au début. Mais si quelqu'un a des exemples de Makefile récursif je serai également preneur.

    Si tu veux que je te donne tout de même mon exemple de récursivité dis le moi je vais essayer de remettre la main dessus
    La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
    -----------------------------------------------------------
    Retrouvez mes articles informatique sur mon Site Developpez.
    Le reste, sur le Site perso !


  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Par défaut
    Merci bcp.

    Je suis déja soulagé de la possibilité de le faire

    J'ai lu la page indiqué et je suis arrivé à faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SRC = DIR_A/*
    TARGET = DIR_B/*
    SCRIPT = script.ksh
     
    all: $(TARGET)
     
    $(TARGET): $(SRC)
    	$(SCRIPT)
     
    clean:
    	rm -rf $(TARGET)
    	@echo "It's clean !"
    Le problème ici est que quand je change 1 fichier du repertoire A, tout est regénéré. En gros on dirait que la dépendance est bien gérée mais au niveau répertoire, pas au niveau unitaire fichier par fichier.

    Vous auriez une idée ? Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Par défaut
    Pour reformuler, si j'ai bien compris, puis-je espérer faire gérer les dépendances unitairement par fichier avec mon "dir1/*" ou vais-je devoir déclarer fichier par fichier, sachant que le contenu du répertoire varie beaucoup ...?

    merci

  5. #5
    Membre confirmé Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Par défaut
    En pratique, il existe une commande pour considérer tous les fichiers d'un répertoire (ce qui évite de devoir le rajouter à la main dans le makefile pour chaque nouveau fichier). Par exemple, pour prendre tous les fichiers .cpp du repertoire courant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SRC=$(wildcard *.cpp)
    Tu dois donc pouvoir faire la meme chose avec le contenu d'un repertoire. Je ne puis t'en dire plus n'etant pas un spécialiste

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 31
    Par défaut
    ok merci.

    J'ai donc trouvé la facon de lister les fichiers sources :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SRC_FILES := $(wildcard $(SRC_DIR)/*)
    Ce qu'il me resterait à fiare désormais c'est :

    Pour chaque fichier de la liste SRC_FILES, déclarer une dépendance avec le fichier TARGET correspondant (meme nom de fichier mais répertoire différent) et lancer le scirpt pour chaque fichier.

    Il est possible dans un Makefile de faire une boucle du genre ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach file in $(SRC_FILES) {
      TARGET_FILE = $(TARGET_DIR)/$(shell basename $file)
      $TARGET_FILE: $file
                  $(SCRIPT) $file
    }

    Merci pour votre aide

Discussions similaires

  1. question sur Makefile
    Par xps1616 dans le forum C
    Réponses: 2
    Dernier message: 20/05/2011, 12h48
  2. Question sur Makefile
    Par parboree dans le forum Systèmes de compilation
    Réponses: 2
    Dernier message: 20/11/2009, 15h25
  3. Question de Makefile
    Par Gnux dans le forum FAQ LaTeX
    Réponses: 5
    Dernier message: 18/05/2006, 00h26
  4. [débutant] Question sur makefile
    Par nivose110 dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 09/03/2006, 13h34
  5. [C linux makefile] question de syntaxe
    Par Ultros dans le forum Systèmes de compilation
    Réponses: 7
    Dernier message: 09/04/2004, 07h58

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