Le normal way
pour Linux consiste à utiliser un fichier make.
Il a évolué à partir de toutes les erreurs que les gens ont commises en compilant des applications de plus en plus complexes à la main ou avec des scripts faits maison. Il n'est pas trivial de représenter les dépendances de construction pour un projet complexe. Make propose simplement un moyen standardisé de spécifier ces dépendances et un outil pour analyser les dépendances et exécuter les actions de construction associées.
Même les interfaces utilisateur qui simplifient/automatisent le processus de construction pour vous utilisent un fichier make ou quelque chose de similaire dans les coulisses.
MISE À JOUR
Pour ceux qui s'interrogent sur le commentaire automake, voici deux points de vue différents sur le sujet
http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool
http://www.scurrilous.com/blog/archives/2005/08/23/i-hate-automake/
Les makefiles font tellement de travail pour vous et sont souvent plus puissants que les gens ne le pensent. Prenez le makefile simple suivant
all: helloworld
c'est une ligne, et (gnu make, au moins) saurait exécuter cc -o helloworld helloworld.c
Ensuite, au fur et à mesure que le projet grandit, vous ajoutez une règle supplémentaire :
helloworld: ui.o xml.o mailcomponent.o
$(CC) $(CFLAGS) -o [email protected] [email protected] $^
et faire savoir pour courir
cc -c ui.c
cc -c xml.c
cc -c mailcomponent.c
cc -o helloworld helloworld.c ui.o xml.o mailcomponent.o
Dites ensuite que vous voulez tout optimiser.
CFLAGS=-O2
au début du fichier prend soin de vous.
Lorsque le projet devient plus volumineux, make conserve une trace des fichiers qui ont été modifiés et qui n'ont pas été modifiés, évitant ainsi les recompilations superflues et chronophages.
Les makefiles sont de merveilleux gains de temps, et je n'ai même pas abordé les recettes plus avancées.