• [^] # Re: Un makefile par répertoire.

    Posté par . En réponse au message makefile pour code divisé en modules. Évalué à 3.


    Le bon sens nous pousse à utiliser un Makefile par répertoire


    Hmm... Par ici le bon sens nous pousserait plutot a avoir un Makefile par projet. Les targets s'ecrivent assez simplement comme ca:

    SRCS=liquides/lait.c liquides/eau.c solides/farine.c solides/sucre.c
    OBJS=$(SRCS:.c=.o)
    # ajoute les CFLAGS qui vont bien pour les include paths

    libgateau.a: $(OBJS)
    ar rcv libgateau.a $(OBJS)

    Avec des regles par defaut pour transformer un .c en .o, cette ligne suffit a compiler tous les sources en objet puis les assembler en libgateau.a. Peu importe que les sources viennent de plusieurs repertoires comme on peut le voir.

    Ajoute une target par librairie, puis les lignes qui vont bien pour compiler les executables.

    Avoir plusieurs Makefiles dans un projet fait du sens si tu as des libs externes (que tu n'as pas developpees). Dans ce cas tu as envie de les garder les plus proches possible de la distribution initiale.

    Ce n'est qu'un exemple a adapter a tes sources. De maniere generale, moins tu as de Makefiles et mieux tu t'en porteras. Si tu as un jour d'autres plateformes a supporter qui necessitent une intervention sur le Makefile tu seras content d'en avoir moins a supporter.