2010-03-20 4 views
2

J'écris un makefile et je n'arrive pas à comprendre comment inclure tous mes fichiers source sans avoir à écrire tous les fichiers source que je veux utiliser. Voici le Makefile J'utilise actuellement:MakeFiles et dépendances

GCC = $(GNUARM_HOME)\bin\arm-elf-gcc.exe 
SOURCES=ShapeApp.cpp Square.cpp Circle.cpp Shape.cpp 
OBJECTS=$(SOURCES:.cpp=.o) 
EXECUTABLE=hello 

all: $(EXECUTABLE) 

$(EXECUTABLE): $(OBJECTS) 
#$(CC) $(LDFLAGS) $(OBJECTS) -o [email protected] 

.cpp.o: 
    $(GCC) -c $< -o [email protected] 

Comment puis-je ajouter automatiquement le nouveau fichier source sans avoir à ajouter à la ligne de sources?

+1

En dehors des projets de jouets, vous ne voulez pas le faire très souvent. Vous avez des ennuis la première fois que vous faites une copie de sauvegarde d'un fichier, ou laissez un peu de code de test traînant. Ne pas énumérer exactement les modules qui composent le programme est une recette pour les problèmes. Si chaque fichier était un programme autonome complet, ce que Dirk a suggéré, c'est plus raisonnable. –

Répondre

1

Voici quelque chose que je l'ai utilisé dans un répertoire examples/ où chaque fichier est mis en correspondance un à un à un exécutable:

sources := $(wildcard *.cpp) 
programs := $(sources:.cpp=) 

[ more settings about compiler flags, linker options, ...] 


all :  $(programs) 

Cela peut être suffisant que make sait comment transformer un fichier .cpp dans un fichier objet puis dans un exécutable. Notez que ceci est sous Linux donc pour Windoze vous auriez probablement besoin de faire

programs :=  $(sources:.cpp=.exe) 

ajouter le .exe.

+0

L'OP ne veut qu'un exécutable. (Bien qu'il puisse probablement comprendre le reste de votre réponse) – rjh

+0

Correct. Tout ce dont il a besoin, c'est l'énoncé des sources. –

Questions connexes