Maison >développement back-end >C++ >Comment créer un Makefile C simple pour un projet à fichier unique avec des dépendances externes ?

Comment créer un Makefile C simple pour un projet à fichier unique avec des dépendances externes ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-10 05:44:16393parcourir

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

Comment créer un Makefile C SIMPLE

Ce guide fournit une approche simple pour créer un Makefile pour un projet C avec un minimum de dépendances.

Problème :

Vous devez créer un Makefile pour un projet avec un seul fichier, a3driver.cpp, qui importe une classe depuis "/user/cse232/Examples/example32.sequence.cpp". Le but est de générer un exécutable nommé a3a.exe.

Solution :

1. Créer un Makefile :

Créez un fichier nommé Makefile dans le répertoire du projet.

2. Définir des variables :

Commencez par définir les variables qui seront utilisées dans tout le Makefile :

CC = g++
CFLAGS = -g
LDFLAGS = -g
LDLIBS = -lstdc++ -lm
  • CC : Le compilateur C.
  • CFLAGS : Indicateurs de compilation pour la source C fichiers.
  • LDFLAGS : Indicateurs de liaison.
  • LDLIBS : Bibliothèques requises pour la liaison.

3. Spécifiez les cibles :

Ensuite, définissez les cibles du projet :

all: a3a.exe
a3a.exe: a3driver.o example32.sequence.o
a3driver.o: a3driver.cpp
example32.sequence.o: example32.sequence.cpp
  • all est la cible par défaut qui construira l'exécutable.
  • a3a .exe est la cible exécutable.

4. Définir les dépendances :

Définir les dépendances pour chaque cible :

  • a3a.exe dépend de a3driver.o et example32.sequence.o.
  • a3driver .o dépend de a3driver.cpp.
  • example32.sequence.o dépend de example32.sequence.cpp.

5. Définir des règles :

Spécifiez les commandes qui seront exécutées pour chaque cible et ses dépendances :

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)
  • Ces règles compilent les fichiers sources et les lient pour créer le exécutable.

6. Définir une cible propre (facultatif) :

Vous pouvez également définir une cible propre pour supprimer tous les artefacts de build :

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

7. Exécutez le Makefile :

Pour construire le projet, exécutez make à partir de la ligne de commande. Cela créera l'exécutable a3a.exe.

Remarque :

Étant donné que les systèmes basés sur Unix n'utilisent pas d'extensions de fichier pour les exécutables, la cible a3a.exe n'a pas une extension dans le Makefile.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn