J'ai trois fichiers: program.c
, program.h
et headers.h
.
program.c
comprend program.h
et headers.h
.
J'ai besoin de compiler ceci sur Linux en utilisant le compilateur gcc . Je ne sais pas comment faire ça. Netbeans en a créé un pour moi, mais il est vide.
Réponses:
Intéressant, je ne savais pas que make utiliserait par défaut le compilateur C étant donné les règles concernant les fichiers source.
Quoi qu'il en soit, une solution simple qui démontre des concepts simples de Makefile serait:
(gardez à l'esprit que make nécessite une tabulation au lieu d'une indentation d'espace, alors assurez-vous de corriger cela lors de la copie)
Cependant, pour prendre en charge plus de fichiers C, vous devrez créer de nouvelles règles pour chacun d'entre eux. Ainsi, pour améliorer:
J'ai essayé de rendre cela aussi simple que possible en omettant des variables comme $ (CC) et $ (CFLAGS) qui sont généralement vues dans les makefiles. Si cela vous intéresse, j'espère que je vous ai donné un bon départ.
Voici le Makefile que j'aime utiliser pour la source C. Sentez-vous libre de l'utiliser:
Il utilise les fonctionnalités joker et patsubst de l'utilitaire make pour inclure automatiquement les fichiers .c et .h dans le répertoire actuel, ce qui signifie que lorsque vous ajoutez de nouveaux fichiers de code à votre répertoire, vous n'aurez pas à mettre à jour le Makefile. Cependant, si vous souhaitez modifier le nom de l'exécutable, des bibliothèques ou des indicateurs de compilateur générés, vous pouvez simplement modifier les variables.
Dans les deux cas, n'utilisez pas autoconf, s'il vous plaît. Je t'en supplie! :)
la source
.PHONY: clean all default
pour les cibles qui sont destinées à être utilisées à partir de la ligne de commande. De plus, Autoconf / Automake ne sont pas si mauvais. Bien sûr, ils se sentent horribles, et s'y habituer est à peu près aussi amusant que de se forcer la tête à travers un mur de briques, mais ils fonctionnent, et ils sont bien développés, et ils couvriront la plupart de vos bases en ce qui concerne la portabilité, et vous rendra la vie beaucoup plus facile à la fin une fois que vous vous serez habitué à leur conception horrible.rm
: stackoverflow.com/questions/2989465/rm-rf-versus-rm-rfPar exemple, ce simple Makefile devrait suffire:
Notez qu'il doit y avoir
<tab>
sur la ligne suivante après nettoyage et exécution, pas d'espaces.MISE À JOUR Les commentaires ci-dessous ont été appliqués
la source
make
sans argument, construisez uniquement votre logiciel. Pour l'exécuter, utilisezmake run
(disponible dans cette réponse, mais pas nécessairement dans tous lesMakefile
s), ou exécutez-le directement:./program
est assez. le reste est implicite
la source
.c
fichier, seulprogram:
est nécessaire. Sweet :)Le fichier de création le plus simple peut être
la source
En fonction du nombre d'en-têtes et de vos habitudes de développement, vous voudrez peut-être étudier gccmakedep. Ce programme examine votre répertoire actuel et ajoute à la fin du makefile les dépendances d'en-tête pour chaque fichier .c / cpp. C'est exagéré lorsque vous avez 2 en-têtes et un fichier programme. Cependant, si vous avez plus de 5 petits programmes de test et que vous modifiez l'un des 10 en-têtes, vous pouvez alors faire confiance à make pour reconstruire exactement les programmes qui ont été modifiés par vos modifications.
la source