(Je suis sous Linux Ubuntu 9.10, donc l'extension pour un exécutable est executablefile.out) Je suis en train de me lancer 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? (En passant, si vous ne l'avez pas encore compris, la fonction principale est dans main.c) Est-ce que quelqu'un pourrait aussi poster un lien vers la documentation d'un fichier makefile?Compilez plusieurs fichiers C avec make
Répondre
Voir mes Makefile Tutorial: How To Write A Makefile. Il fournit un Makefile bien conçu qui va construire un tel projet (avec plusieurs fichiers sources C et C++), explique comment cela fonctionne, et met en garde contre les pièges courants ainsi que les mauvaises pratiques de makefile qui sont trop fréquentes pour se rencontrer dans la nature .
GNU make devrait être ce que vous cherchez.
Les liens affichés sont tous bons. Pour vous cas particulier, vous pouvez essayer cela. Essentiellement tous les Makefiles suivent ce modèle. Tout le reste est 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 est ici que le Makefile regarde les règles de manière séquentielle et construit que certains éléments sont nécessaires.
Il va d'abord regarder le programme et voir 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 aura besoin de main.c et de dbAdapter.h (je suppose que dbAdapter.h est inclus dans main.c).
Il utilisera ces sources pour construire main.o en le compilant avec gcc. Le -c indique que nous voulons seulement compiler.
Il fait la même chose avec dbAdapter.o. Quand 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.
... sauf que vous ne devriez pas coder en dur le compilateur, et vous devriez tirer parti des règles de construction prédéfinies ... voir mon tutoriel. –
Bien sûr, vous avez raison. Mais l'OP est relativement nouveau pour Makefiles et je voulais juste montrer le processus sous-jacent sans aucune indirection. – aduric
"Mais l'OP est relativement nouveau pour Makefiles" - vous devriez le mettre sur la bonne voie plutôt que de mettre des erreurs communes dans son premier exemple. – mk12
- 1. Compilez C++ avec Cygwin
- 2. compilez des fichiers non-source dans Xcode
- 3. compilez c pour fastcgi
- 4. compilez des fichiers d'objets non essentiels avec GCC
- 5. compilez PHP 5.1.6 avec PDO MySQL
- 6. Compilez C++ pour toutes les distributions Linux
- 7. C - Lire plusieurs fichiers
- 8. Simple make file question (C)
- 9. GNU make rule pour plusieurs cibles
- 10. make: fichier hiérarchique make
- 11. Compilez jruby "Hello world" problème
- 12. C#: gérer plusieurs fichiers App.config
- 13. Compilez le fichier C sans _cplusplus def
- 14. Compilez les autres bibliothèques externes (sans CMakeLists.txt) avec CMake
- 15. Compilez du code C dans Visual C++ dll?
- 16. Dépendance conditionnelle avec make/gmake
- 17. Comment faire pour s'assurer que les fichiers objet sont compilés avec les paramètres corrects dans Makefile avec plusieurs cibles MAKE
- 18. Compilez le fichier XeLaTeX tex avec latexmk
- 19. Compilez le projet Eclipse avec Ant
- 20. Compilez des assemblys avec un accès restrictif
- 21. Problème avec le logiciel "make & make install" sur Linux
- 22. Interrogation de plusieurs fichiers XML avec LINQ dans C# Statements
- 23. Comment travailler avec plusieurs fichiers et bibliothèques C# en F #?
- 24. C#: diviser une classe en plusieurs fichiers (avec un formulaire)
- 25. MySQL Connector C++ - make Erreur 1
- 26. Répertoire pour les fichiers générés par Make pendant l'installation à partir de configure, make et make install
- 27. Menu contextuel Windows pour plusieurs fichiers [C++]
- 28. Ouverture de plusieurs fichiers (OpenFileDialog, C#)
- 29. Y compris les bibliothèques boost dans les fichiers make
- 30. C# FTPWebRequête pour lire plusieurs fichiers
Je viens de le mettre à jour et je serais heureux d'avoir des commentaires. –
Lien est mort dès maintenant. – Pat
@MichaelAaronSafyan Puisque vous visez un support multiplate-forme, avez-vous des conseils pour nettoyer le fichier programme lorsque Windows le sort en $ (program_NAME) .exe? –