„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Das Makefile verstehen (Beispiel mit C-Sprache).

Das Makefile verstehen (Beispiel mit C-Sprache).

Veröffentlicht am 31.07.2024
Durchsuche:138

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 Befehl, der zum Erstellen des Ziels ausgeführt werden soll.

Einfaches Beispiel

target: prerequisites
    command

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 $



  1. Phonies: Verwendet .PHONY für Ziele, die keine Dateien sind.
   .PHONY: clean
   clean:
       rm -f $(OBJECTS) $(TARGET)
  1. Variablen: Verwendet Variablen, um die Verwaltung von Pfaden und Optionen zu vereinfachen.
   CC = gcc
   CFLAGS = -Wall
  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)

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 $



Gute Praktiken

  1. Mit Tabulatoren einrücken: Befehle in Regeln müssen 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 die 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 auf dem neuesten Stand ist und führt die zugehörigen Befehle nicht aus. .PHONY vermeidet dies.

  • Leistungsverbesserungen: 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, um nur das neu zu 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.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/ashcript/comprendre-le-makefile-exemple-avec-le-langage-c-47n9 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3