Heim > Backend-Entwicklung > C++ > Das Makefile verstehen (Beispiel mit C-Sprache).

Das Makefile verstehen (Beispiel mit C-Sprache).

王林
Freigeben: 2024-07-17 01:18:02
Original
946 Leute haben es durchsucht

Comprendre le Makefile (Exemple avec langage C).

Ein Makefile ist eine Datei, die vom Make-Tool verwendet wird, um die Kompilierung von Programmen zu automatisieren. Hier sind die Standardregeln und Best Practices zum Schreiben eines effektiven Makefiles:

Grundstruktur eines Makefiles

  1. Ziel: Was Sie erstellen möchten (z. B. eine ausführbare Datei).
  2. Voraussetzungen: Die zum Erstellen des Ziels erforderlichen Dateien (z. B. Quelldateien).
  3. Regel: Der auszuführende Befehl, um das Ziel zu erstellen.

Einfaches Beispiel

target: prerequisites
    command
Nach dem Login kopieren

Standardregeln

  1. Standardregel: Das erste Ziel im Makefile ist dasjenige, das standardmäßig erstellt wird.

  2. Quelldateien kompilieren:

    • Verwenden Sie Variablen für Compiler und Optionen.
    • Beispiel:
   CC = gcc
   CFLAGS = -Wall -g
   SOURCES = main.c utils.c
   OBJECTS = $(SOURCES:.c=.o)
   TARGET = mon_programme

   $(TARGET): $(OBJECTS)
       $(CC) -o $@ $^

   %.o: %.c
       $(CC) $(CFLAGS) -c $< -o $@
Nach dem Login kopieren
  1. Phonies: Verwendet .PHONY für Ziele, die keine Dateien sind.
   .PHONY: clean
   clean:
       rm -f $(OBJECTS) $(TARGET)
Nach dem Login kopieren
  1. Variablen: Verwendet Variablen, um die Verwaltung von Pfaden und Optionen zu vereinfachen.
   CC = gcc
   CFLAGS = -Wall
Nach dem Login kopieren
  1. Abhängigkeitsmanagement: Verwendet implizite Regeln und Muster, um Wiederholungen zu reduzieren.

  2. Automatische Abhängigkeiten: Sie können Abhängigkeiten automatisch für .o-Dateien generieren.

   -include $(OBJECTS:.o=.d)
Nach dem Login kopieren

Vollständiges Beispiel

Hier ist ein vollständiges Makefile-Beispiel:

# Variables
CC = gcc
CFLAGS = -Wall -g
SOURCES = main.c utils.c
OBJECTS = $(SOURCES:.c=.o)
TARGET = mon_programme

# Règle par défaut
all: $(TARGET)

# Lien de l'exécutable
# $@ -> $(TARGET)
# $^ -> $(OBJECTS)
$(TARGET): $(OBJECTS)
    $(CC) -o $@ $^

# Compilation des fichiers .c en .o
# $< -> Premier element des pr
%.o: %.c
    $(CC) $(CFLAGS) -c $< -o $@

# Déclaration des cibles phony
.PHONY: all clean fclean re

# Nettoyage des fichiers objets
clean:
    rm -f $(OBJECTS)

# Nettoyage complet (fichiers objets et exécutable)
fclean: clean
    rm -f $(TARGET)

# Refaire la compilation
re: fclean all
Nach dem Login kopieren

Gute Praktiken

  1. Mit Tabulatoren einrücken: Befehle in Regeln sollten mit Tabulatoren und nicht mit Leerzeichen eingerückt werden.

  2. Kommentarcode: Verwendet Kommentare, um Abschnitte des Makefiles zu erklären.

  3. Dateien gruppieren: Wenn Ihr Projekt mehrere Dateien enthält, organisieren Sie diese in Unterverzeichnissen und verwenden Sie Variablen, um Pfade zu verwalten.

  4. Implizite Regeln verwenden: Nutzen Sie die integrierten Regeln von make, um das Umschreiben allgemeiner Regeln zu vermeiden.

Warum .PHONY verwenden?

  • Konflikte vermeiden: Wenn eine Datei mit demselben Namen wie ein Ziel existiert, geht make davon aus, dass das Ziel aktuell ist und führt die zugehörigen Befehle nicht aus. .PHONY vermeidet dies.

  • Verbesserte Leistung:Falsche Ziele gelten immer als „zu erledigen“, was die Ausführungsgeschwindigkeit der zugehörigen Befehle verbessern kann.

Warum %.o:%c zum Kompilieren verwenden?

  • Effizienz: Durch die Verwendung von %.o:%c können Sie von der Make-Optimierung profitieren und nur das neu kompilieren, was notwendig ist.

  • Praktisch: Für größere Projekte ist %.o:%c viel besser geeignet.

Abschluss

Ein gut strukturiertes Makefile erleichtert die Projektverwaltung und vermeidet Kompilierungsfehler. Durch Befolgen dieser Regeln und Best Practices können Sie ein effizientes und wartbares Makefile erstellen.

Das obige ist der detaillierte Inhalt vonDas Makefile verstehen (Beispiel mit C-Sprache).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage