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 09/04/2012, à 16:11

thomderainette

makefile - créer des dépendances génrériques

Bonjour,

J'ai une liste de fichiers sources :
   x1.ext à xn.ext
   y1.ext à ym.ext

le fichier xi.ext est indépendant
le fichier yi.ext inclu les fichiers ./yi/yil.ext2 avec l un nombre formaté sur 3 caractères 001, 002...

je cherche à compiler de manière générique l'ensemble des sources avec un unique makefile


all: $(OBJ)

y1.out: y1.ext /y1/y1*.ext2
...
ym.out: ym.ext /ym/ym*.ext2

%.out: %.ext
    $(COMPILATEUR) $<

j'aimerai éviter d'avoir besoin des lignes où le nom des fichiers est écrit y1.out: y1.ext /y1/y1*.ext2

j'ai essayé lode suivant, mais je ne compile plus les xi

%.out: %.ext /%/%*.ext2
    $(COMPILATEUR) $<

Merci de votre aide

Hors ligne

#2 Le 09/04/2012, à 19:14

telliam

Re : makefile - créer des dépendances génrériques

px tu donner ton makefile complet?


"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard

Hors ligne

#3 Le 12/04/2012, à 17:59

thomderainette

Re : makefile - créer des dépendances génrériques

Le voici:

LILY=/bin/lilypond
SRC = t1.ly t2.ly t3.ly a.ly b.ly
OBJ= $(SRC:.ly=.pdf)

all: $(OBJ)

a.pdf: a.ly a/a*.ly

b.pdf: b.ly b/b*.ly

%.pdf: %.ly
    $(LILY) $<

clean:
    rm *.pdf

Hors ligne

#4 Le 12/04/2012, à 22:48

pingouinux

Re : makefile - créer des dépendances génrériques

Bonsoir,
Ce n'est pas tout-à-fait ce qui est demandé (que je ne sais pas faire), mais ce script gener_mkf.sh devrait générer le makefile (fichier mkf) :

#!/bin/bash

exec 1>mkf
shopt -s nullglob
COMPIL='\n\t$(LILY) $<\n'

printf "LILY=/bin/lilypond\nSRC = "
for i in *.ly; do printf " $i"; done
printf '\nOBJ= $(SRC:.ly=.pdf)\n\nall: $(OBJ)\n'

for i in *.ly; do
   rac=${i/.ly/}
   printf "\n${rac}.pdf: $i"
   if [ -d "$rac" ]; then
      for j in "$rac/$rac"*.ly; do
         printf " $j"
      done
   fi
   printf "$COMPIL"
done

printf "\n%%.pdf: %%.ly$COMPIL"
printf "\nclean:\n\trm *.pdf\n"

À lancer depuis le répertoire où se trouvent les fichiers a.ly b.ly

./gener_mkf.sh

Hors ligne

#5 Le 19/04/2012, à 11:17

thomderainette

Re : makefile - créer des dépendances génrériques

Effectivement ça marche.
Le makefile créé prend en compte les dossiers.

La solution proposée par pingouinux me satisfait à court terme
merci

Je laisse toutefois la question ouverte, puisque dans l'idée, je cherche un makefile générique

Hors ligne

#6 Le 19/04/2012, à 11:51

valAa

Re : makefile - créer des dépendances génrériques

Hello,
Peut-être peux-tu t'inspirer de la section 7 de ce tutoriel http://gl.developpez.com/tutoriel/outil/makefile
ou la liste des fichiers sources est générée de automatiquement:

SRC= $(wildcard *.c)

ça devrait être adaptable à ton cas

Hors ligne