2009-12-17 3 views
3

J'utilise nmake pour compiler plusieurs fichiers source dans un elfe. Cependant, je ne veux pas spécifier les fichiers .o dans une longue liste comme ceci:Nmake obtenir une liste de tous les fichiers .o à partir de fichiers .cpp

OBJS = file1.o file2.o file3.o 

Ce que je préférerais est d'utiliser un caractère générique qui spécifie tous les fichiers .o dans le répertoire courant que les dépendances du .elf . Toutefois, les fichiers .o n'existent pas jusqu'à ce que je les compile à partir des fichiers .cpp. Est-il possible d'obtenir une liste de fichiers cpp en utilisant une extension générique, puis faire un remplacement de chaîne pour remplacer le .cpp par .o.

Répondre

0

Je suis plus familier avec Unix faire et gmake, mais vous pourriez peut-être utiliser:

OBJS = $(SOURCES:.cpp=.o) 

(en supposant que vos fichiers source pourrait être cité dans la Liste)

+1

Cela fonctionnerait, mais alors je vais avoir le même problème de spécifier une liste de fichiers. Cpp plutôt que des fichiers. Mon objectif est de ne pas avoir à modifier le fichier make chaque fois que j'ajoute ou supprime un fichier source. –

0

Here est une autre réponse qui pourrait aider toi.

Une autre solution peut être d'utiliser un fichier de commandes d'emballage, où vous créez une liste de tous les fichiers .cpp avec une boucle « for », comme

del listoffiles.txt 
echo SOURCES= \ >> listoffiles.txt 
for %i in (*.dll) do @echo %i \ >>listoffiles.txt 
echo. >> listoffiles.txt 

Ensuite, vous pouvez essayer d'utiliser cela avec la ! INCLURE macro préprocesseur nmake:

!INCLUDE listoffiles.txt 

(je suis sûr que cela ne fonctionnera pas à partir de zéro, mais l'idée générale devrait être clair).

4

Il n'y a pas de manière particulièrement élégante de faire cela dans NMAKE. Si vous le pouvez, vous devriez plutôt utiliser GNU Make, qui est disponible sous Windows et facilite beaucoup de tâches.

Si vous devez utiliser NMAKE, vous devez utiliser make récursive pour le faire automatiquement, car NMAKE ne développe que les caractères génériques dans les listes de prérequis. J'ai montré comment faire cela en réponse à une autre question similaire here.

Espérons que ça aide.

Questions connexes