So erstellen Sie ein EINFACHES C-Makefile
Erstellen eines Makefiles für ein einfaches C-Projekt
Problem:
- Es muss ein Makefile erstellt werden, um ein Projekt zu kompilieren, das aus einem einzelnen C besteht Datei (a3driver.cpp), die eine Klasse von einem anderen Speicherort importiert („/user/cse232/Examples/example32.sequence.cpp“).
Antwort:
Erstellen der Makefile:
- Erstellen Sie eine Makefile-Datei.
-
Variablen angeben:
- CC: C-Compiler (z. B. gcc)
- CXX: C-Compiler (z. B. g)
- RM: Befehl zum Entfernen von Dateien (z. B. rm -f)
- CPPFLAGS: Kompilierungsflags (z. B. -g zum Debuggen)
- LDFLAGS: Linker-Flags (z. B. -g für Debuggen)
- LDLIBS: Zu verknüpfende Bibliotheken (in diesem Fall leer)
-
Quell- und Objektdateien definieren:
- SRCS: Liste der C-Quelldateien
- OBJS: Liste der entsprechenden Objektdateien (generiert durch Substitution)
-
Ziele definieren:
- alle: Hauptziel, standardmäßig wird die ausführbare Datei erstellt
- Tool: Ausführbare Datei Name
-
Abhängigkeiten angeben:
- Abhängigkeiten für die ausführbare Datei und die Objektdateien angeben (nicht erforderlich, da wir sie verwenden werden). eingebaut Regeln)
-
Eingebaute Regeln verwenden:
- Makefile übernimmt automatisch Kompilierungs- und Verknüpfungsaufgaben basierend auf definierten Variablen und Zielabhängigkeiten
-
Reinigung Ziele:
- clean: Entfernt Objektdateien
- distclean: Entfernt alle generierten Dateien
Makefile Beispiel:
CC=gcc
CXX=g++
RM=rm -f
CPPFLAGS=-g
LDFLAGS=-g
LDLIBS=
SRCS=a3driver.cpp
OBJS=$(subst .cpp,.o,$(SRCS))
all: tool
tool: $(OBJS)
$(CXX) $(LDFLAGS) -o tool $(OBJS) $(LDLIBS)
clean:
$(RM) $(OBJS)
distclean: clean
$(RM) tool
Nach dem Login kopieren
Ausführen des Makefile:
- Öffnen Sie das Terminal oder die Eingabeaufforderung.
- Navigieren Sie zu dem Verzeichnis, in dem sich das Makefile befindet.
- Geben Sie „make“ ein, um das zu erstellen Projekt.
- Dadurch wird die ausführbare Datei „tool“ erstellt, wenn der Build erfolgreich ist.
Das obige ist der detaillierte Inhalt vonWie erstelle ich ein einfaches C-Makefile für ein einzelnes Quelldateiprojekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!