Heim >Backend-Entwicklung >C++ >Wie erstelle ich ein einfaches C-Makefile für ein Einzeldateiprojekt mit externen Abhängigkeiten?

Wie erstelle ich ein einfaches C-Makefile für ein Einzeldateiprojekt mit externen Abhängigkeiten?

Susan Sarandon
Susan SarandonOriginal
2024-12-10 05:44:16387Durchsuche

How to Create a Simple C   Makefile for a Single-File Project with External Dependencies?

So erstellen Sie ein EINFACHES C-Makefile

Diese Anleitung bietet einen einfachen Ansatz zum Erstellen eines Makefiles für ein C-Projekt mit minimalen Abhängigkeiten.

Problem:

Sie müssen ein Makefile für ein Projekt mit einem erstellen einzelne Datei, a3driver.cpp, die eine Klasse aus „/user/cse232/Examples/example32.sequence.cpp“ importiert. Das Ziel besteht darin, eine ausführbare Datei mit dem Namen a3a.exe zu generieren.

Lösung:

1. Erstellen Sie ein Makefile:

Erstellen Sie eine Datei mit dem Namen Makefile im Projektverzeichnis.

2. Variablen definieren:

Beginnen Sie mit der Definition von Variablen, die im gesamten Makefile verwendet werden:

CC = g++
CFLAGS = -g
LDFLAGS = -g
LDLIBS = -lstdc++ -lm
  • CC:Der C-Compiler.
  • CFLAGS: Kompilierungsflags für C-Quelle Dateien.
  • LDFLAGS: Verknüpfungsflags.
  • LDLIBS: Für die Verknüpfung erforderliche Bibliotheken.

3. Geben Sie Ziele an:

Als nächstes definieren Sie Ziele für das Projekt:

all: a3a.exe
a3a.exe: a3driver.o example32.sequence.o
a3driver.o: a3driver.cpp
example32.sequence.o: example32.sequence.cpp
  • all ist das Standardziel, das die ausführbare Datei erstellt.
  • a3a .exe ist das ausführbare Ziel.

4. Abhängigkeiten definieren:

Abhängigkeiten für jedes Ziel definieren:

  • a3a.exe hängt von a3driver.o und example32.sequence.o ab.
  • a3driver .o hängt davon ab a3driver.cpp.
  • example32.sequence.o hängt von example32.sequence.cpp ab.

5. Regeln definieren:

Geben Sie die Befehle an, die für jedes Ziel und seine Abhängigkeiten ausgeführt werden:

a3driver.o:
    $(CC) $(CFLAGS) -c a3driver.cpp

example32.sequence.o:
    $(CC) $(CFLAGS) -c example32.sequence.cpp

a3a.exe: a3driver.o example32.sequence.o
    $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o $(LDLIBS)
  • Diese Regeln kompilieren die Quelldateien und verknüpfen sie, um die zu erstellen ausführbar.

6. Definieren Sie ein sauberes Ziel (optional):

Sie können auch ein sauberes Ziel definieren, um alle Build-Artefakte zu entfernen:

clean:
    rm -f a3driver.o example32.sequence.o a3a.exe

7. Führen Sie das Makefile aus:

Um das Projekt zu erstellen, führen Sie make über die Befehlszeile aus. Dadurch wird die ausführbare Datei a3a.exe erstellt.

Hinweis:

Da Unix-basierte Systeme keine Dateierweiterungen für ausführbare Dateien verwenden, verfügt das Ziel a3a.exe nicht über Dateierweiterungen eine Erweiterung im Makefile.

Das obige ist der detaillierte Inhalt vonWie erstelle ich ein einfaches C-Makefile für ein Einzeldateiprojekt mit externen Abhängigkeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn