Comment créer un Makefile C SIMPLE
Problème :
Nous devons créer un Makefile pour gérer notre projet C, mais on ne nous a pas appris comment le faire. Le projet se compose d'un seul fichier, a3driver.cpp, qui importe une classe depuis /user/cse232/Examples/example32.sequence.cpp.
Solution :
1. Makefile de base :
a3a.exe: a3driver.cpp example32.sequence.cpp g++ -g -o a3a.exe a3driver.cpp example32.sequence.cpp
Ce Makefile indique que l'exécutable a3a.exe dépend des fichiers sources a3driver.cpp et example32.sequence.cpp. Une fois exécuté, il exécutera la commande pour compiler le programme dans le fichier exécutable.
2. Utilisation des règles intégrées :
CC=g++ CPPFLAGS=-g a3a.exe: a3driver.o example32.sequence.o $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o a3driver.o: a3driver.cpp $(CC) $(CPPFLAGS) -c a3driver.cpp example32.sequence.o: example32.sequence.cpp $(CC) $(CPPFLAGS) -c example32.sequence.cpp
Ce Makefile utilise des règles intégrées pour simplifier les commandes de compilation. Il définit la variable CC comme compilateur C et la variable CPPFLAGS avec des indicateurs de compilation communs. Les dépendances sont toujours explicitement définies, mais les commandes de compilation sont automatiquement générées.
3. Utilisation de dépendances générées automatiquement :
CC=g++ CPPFLAGS=-g a3a.exe: a3driver.o example32.sequence.o $(CC) $(LDFLAGS) -o a3a.exe a3driver.o example32.sequence.o depend: .depend .depend: $(SRCS) $(CC) $(CPPFLAGS) -MM $^ > .depend; .PHONY: clean clean: rm -f a3driver.o example32.sequence.o .depend include .depend
Ce Makefile utilise l'indicateur -MM intégré pour générer automatiquement des dépendances. La cible depend exécute la commande qui génère le fichier .depend avec les dépendances. La cible .PHONY: clean est une cible spéciale qui n'est pas réellement un fichier ou une règle. La cible propre supprime les fichiers objets et le fichier .depend.
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!