"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment compiler et lier plusieurs fichiers .cpp en un seul binaire ?

Comment compiler et lier plusieurs fichiers .cpp en un seul binaire ?

Publié le 2024-11-11
Parcourir:163

How to Compile and Link Multiple .cpp Files into a Single Binary?

Comment compiler et lier plusieurs fichiers .cpp en un fichier binaire

Cet article vise à aborder la question de la compilation de plusieurs fichiers .cpp en .o objets et les relier en un seul binaire.

Configuration du Makefile

Pour ce faire, un Makefile peut être utilisé avec le contenu suivant :

SRC_DIR = ./src
OBJ_DIR = ./obj
SRC_FILES = $(wildcard $(SRC_DIR)/*.cpp)
OBJ_FILES = $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRC_FILES))

main.exe: $(OBJ_FILES)
    g   $(LDFLAGS) -o $@ $^

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
    g   $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<

Explication :

  • SRC_DIR : Spécifie le répertoire contenant les fichiers .cpp sources.
  • OBJ_DIR: Indique le répertoire dans lequel les objets .o seront créés.
  • SRC_FILES: A liste de tous les fichiers .cpp dans SRC_DIR.
  • OBJ_FILES : Une liste de tous les objets .o qui seront générés.
  • main.exe : Le nom du binaire final.
  • LDFLAGS : Indicateurs de l'éditeur de liens.
  • CPPFLAGS : Indicateurs du préprocesseur C.
  • CXXFLAGS : Indicateurs du compilateur C.

Génération de graphiques de dépendances

Pour générer automatiquement des dépendances entre les fichiers source et objet, ajoutez ce qui suit à le Makefile :

CXXFLAGS  = -MMD
-include $(OBJ_FILES:.o=.d)

Meilleures pratiques

Cette approche est couramment utilisée pour compiler et lier plusieurs fichiers C. Cependant, il est essentiel de se référer au manuel GNU Make pour des conseils supplémentaires et des options avancées.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3