• # make

    Posté par . En réponse à la dépêche Petit éventail des outils de construction (« builder ») libres. Évalué à 10.

    • dépendances : on doit gérer à la main les dépendances entre les fichiers

    Heu, pas obligatoirement. Pour mon code source, les dépendances sont auto-calculées. C'est même plutôt simple :

    all: prog
    SRC := $(wildcard *.c)
    OBJ := $(patsubst %.c,%.o,$(SRC))
    DEP := $(patsubst %.c,%.deps,$(SRC))
    -include $(DEP)
    %.deps: %.c Makefile
     gcc -MM $< >$@
    %.o: %.c Makefile
     gcc -o $@ $<
    prog: $(OBJ)
     ld -o $@ $^
    
    

    Bon, d'accord, c'est un exemple simple. Mais il est possible de créer des dépendances dynamiques avec make.

    Un des très gros avantage de make sur tous les autres builders, c'est qu'il fait partie de [POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm), et que par conséquent il est disponible de base, ce qui n'est pas le cas des autres builders.

    Aussi, make est généraliste. Il n'a aucune connaissance d'un quelconque langage d'entée. On peut tout traiter comme une source (eg. code source, image, video, document texte...) et comme sortie (eg. binaire, image, video, document HTML...).

    J'ai même le frontal de mon projet qui est un script make (un Makefile exécutable, quoi).

    Hop,
    Moi.