• [^] # Re: Make mon ami

    Posté par (site web personnel) . En réponse au journal Un petit tour des systèmes de build. Évalué à 4.

    Make, c'est un vrai langage de programmation. Et comme tout langage de programmation, si on ne l'apprend pas, on n'arrive pas bien à l'utiliser. Certes, sa syntaxe est pluôt datée, et la documentation de Gnu Make est particulièrement pas efficace, mais Make reste, malgrès ces défauts, un langage plutôt facile à appréhender. Et si Gnu Make est mauvais, BSD Make est réputé meilleur...

    Pour récupérer le nom d'un fichier sans son extension, Gnu make propose $(basename target), par exemple $(basename $<). Gnu Make propose aussi la possibilité d'effectuer des substitutions sur le nom des variables, ce qui peut peut-être répondre à ton besoin:

    MYFILES = alpha beta gamma
    MYHTML = $(MYFILES:%=%.html)
    MYMKD = $(MYFILES:%=%.mkd)
    MYDIR = /path/to/my/dir
    MYTARGET = $(MYHTML:%=$(MYDIR)/%)

    Pour que le makefile soit pris en compte lors de la génération de l'arbre des dépendances, on l'indique explicitement comme dépendance:

    %.html: %.mkd Makefile
     markdown $< $@

    Si cette syntaxe n'est pas amicale, on devrait pouvoir faire ainsi:

    %.html: %.mkd
     markdown $< $@
    %.html %.pdf %.odt %.dvi: Makefile