web-dev-qa-db-fra.com

Compiler plusieurs fichiers C avec make

(J'utilise Linux Ubuntu 9.10, donc l'extension pour un exécutable est executablefile.out) Je me lance dans la programmation modulaire (programmation avec plusieurs fichiers) en C et je veux savoir comment compiler plusieurs fichiers dans un seul makefile. Par exemple, quel serait le makefile pour compiler ces fichiers: main.c, dbAdapter.c, dbAdapter.h? (Soit dit en passant, si vous ne l'avez pas encore compris, la fonction principale est dans main.c). Quelqu'un pourrait-il également publier un lien vers la documentation d'un makefile?

28
Mohit Deshpande

Les liens affichés sont tous bons. Pour votre cas particulier, vous pouvez essayer ceci. Essentiellement, tous les Makefiles suivent ce modèle. Tout le reste n'est que des raccourcis et des macros.

program: main.o dbAdapter.o
   gcc -o program main.o dbAdapter.o

main.o: main.c dbAdapter.h
   gcc -c main.c

dbAdapter.o dbAdapter.c dbAdapter.h
   gcc -c dbAdapter.c

L'essentiel ici est que le Makefile examine les règles de manière séquentielle et se construit lorsque certains éléments sont nécessaires.

Il examinera d'abord le programme et verra que pour construire le programme, il a besoin de quelque chose appelé main.o et dbAdapter.o.

Il trouvera alors main.o. Cependant, pour construire main.o, il faudra main.c et dbAdapter.h (je suppose que dbAdapter.h est inclus dans main.c).

Il utilisera ces sources pour construire main.o en le compilant en utilisant gcc. Le -c indique que nous voulons seulement compiler.

Il fait la même chose avec dbAdapter.o. Lorsqu'il a ces deux fichiers objets, il est prêt à les lier. Il utilise également le compilateur gcc pour cette étape. Le -o indique que nous créons un fichier appelé programme.

39
aduric

GNU make devrait être ce que vous recherchez.

0
shinkou