Ich habe drei Dateien: program.c
, program.h
und headers.h
.
program.c
beinhaltet program.h
und headers.h
.
Ich muss dies unter Linux mit dem gcc- Compiler kompilieren. Ich bin mir nicht sicher, wie ich das machen soll. Netbeans hat eine für mich erstellt, aber sie ist leer.
Antworten:
Interessanterweise wusste ich nicht, dass make standardmäßig den C-Compiler verwenden würde, wenn Regeln für Quelldateien festgelegt wurden.
Eine einfache Lösung, die einfache Makefile-Konzepte demonstriert, wäre:
(Denken Sie daran, dass make eine Registerkarte anstelle einer Leerzeicheneinrückung erfordert. Korrigieren Sie dies daher beim Kopieren.)
Um jedoch mehr C-Dateien zu unterstützen, müssten Sie für jede neue Regeln erstellen. So verbessern:
Ich habe versucht, dies so einfach wie möglich zu gestalten, indem ich Variablen wie $ (CC) und $ (CFLAGS) weggelassen habe, die normalerweise in Makefiles angezeigt werden. Wenn Sie daran interessiert sind, das herauszufinden, hoffe ich, dass ich Ihnen einen guten Start gegeben habe.
Hier ist das Makefile, das ich gerne für die C-Quelle verwende. Fühlen Sie sich frei, es zu benutzen:
Es verwendet die Platzhalter- und Patsubst-Funktionen des Dienstprogramms make, um automatisch .c- und .h-Dateien in das aktuelle Verzeichnis aufzunehmen. Wenn Sie also neue Codedateien zu Ihrem Verzeichnis hinzufügen, müssen Sie das Makefile nicht aktualisieren. Wenn Sie jedoch den Namen der generierten ausführbaren Datei, Bibliotheken oder Compiler-Flags ändern möchten, können Sie einfach die Variablen ändern.
Verwenden Sie in beiden Fällen bitte keine automatische Konfiguration. Ich flehe dich an! :) :)
quelle
.PHONY: clean all default
nach Ziele verwenden, die über die Befehlszeile verwendet werden sollen. Auch Autoconf / Automake sind nicht so schlecht. Sicher, sie fühlen sich schrecklich an und es macht ungefähr so viel Spaß, sich an sie zu gewöhnen, als würde man den Kopf durch eine Mauer zwingen, aber sie funktionieren, sind gut entwickelt und decken die meisten Ihrer Basen ab, was die Portabilität betrifft. und wird Ihr Leben am Ende viel einfacher machen, wenn Sie sich an ihr schreckliches Design gewöhnt haben.rm
: stackoverflow.com/questions/2989465/rm-rf-versus-rm-rfZum Beispiel sollte dieses einfache Makefile ausreichen:
Beachten Sie, dass
<tab>
nach dem Reinigen und Ausführen in der nächsten Zeile Leerzeichen stehen müssen.UPDATE Kommentare unten angewendet
quelle
make
Ohne Argumente erstellen Sie normalerweise nur Ihre Software. Um es auszuführen, verwenden Sie entwedermake run
(in dieser Antwort verfügbar, aber nicht unbedingt in allenMakefile
s) oder führen Sie es direkt aus:./program
reicht. der Rest ist implizit
quelle
.c
Datei ist, ist nurprogram:
erforderlich. Süß :)Die einfachste make-Datei kann sein
quelle
Abhängig von der Anzahl der Header und Ihren Entwicklungsgewohnheiten möchten Sie möglicherweise gccmakedep untersuchen. Dieses Programm überprüft Ihr aktuelles Verzeichnis und fügt am Ende des Makefiles die Header-Abhängigkeiten für jede .c / cpp-Datei hinzu. Dies ist übertrieben, wenn Sie 2 Header und eine Programmdatei haben. Wenn Sie jedoch mehr als 5 kleine Testprogramme haben und einen von 10 Headern bearbeiten, können Sie make vertrauen, um genau die Programme neu zu erstellen, die durch Ihre Änderungen geändert wurden.
quelle