• [^] # Re: Makefile ?

    Posté par (site web personnel) . En réponse à la dépêche Nouvelle version d’autojump. Évalué à 6.

    Make est fait pour les compilations. L'utiliser pour installer des fichiers, c'est déjà un détournement de sa fonction, alors à partir de là, ça ou un script, c'est kif-kif, je dirais.

    Je ne suis pas tout à fait d'accord avec l'idée de ``détournement''. C'est peut-être une utilisation inattendue, si on a commencé par apprendre que Make sert à compiler des programmes. Mais finalement, la différence conceptuelle entre décrire une tâche dans le langage de Make et dans le langage du shell réside dans l'organisation du programme. Au lieu de l'approche découpant la tâche à accomplir en procédures et sous-procédures, etc., Make impose de penser en terme d'étapes et de transitions et se débrouille pour combiner entre eux ces éléments de description de la tâche pour arriver au résultat escompté, si celui-ci peut-être atteint. Un des intérêts de ce cette approche est qu'on peut enrichir une liste d'étapes et de transitions, ce qui du point de vue procédural du shell revient à éditer le cœur d'une procédure.

    Par exemple, si notre procédure d'installation générique ressemble à

    # shell
    install() {
     do-preinstall
     do-install
     do-postinstall
    }
    # Makefile
    install: do-preinstall do-install do-postinstall
    

    on l'adapte à nos besoins particuliers, dans le monde de Make en ajoutant des dépendance aux étapes do-preinstall do-install et do-postinstall là où le shell nous obligerait à trouver, copier et modifier le code des procédure do-preinstall etc.

    En clair, par rapport au shell, l'approche de Make montre sa force dans la facilité qu'elle confère aux solutions générales à s'adapter aux cas particuliers. (On peut certes utiliser la méthodologies objet avec le shell, mais je ne connais pas de proof of concept à part quelques exemples que j'ai écrits pour m'amuser.)

    Ceci dit, comme méthode d'installation, un script est très bien!