2009-06-02 14 views
6

J'ai tous mes fichiers source dans le dossier Source, le fichier makefile est dans le dossier Makefile et je veux que tous les fichiers objets soient placés dans le dossier Objects. C'est un projet C sur lequel je travaille. Tous ces trois dossiers se trouvent dans un dossier nommé Project.nmake Makefile pour placer les fichiers objet dans un répertoire séparé

dossier projet contient: Source Makefile Objets

iam essayant de trouver un moyen d'obtenir le Makefile pour compiler la source à partir du dossier source, j'ai essayé d'utiliser:

... 
SOURCE_DIR=..\Source 
OUTPUT_DIR=..\Objects 
.c.obj: 
    $(CC) $(SOURCE_DIR)\$*.c /Fo$(OUTPUT_DIR)\$*.obj 
... 

mais ne fonctionne pas, je me retrouve avec un message d'erreur alors que dit ne sais pas comment faire myfile.obj

+0

Veuillez ajouter la partie qui spécifie ce que le fichier makefile doit générer. – Bahbar

Répondre

0

Si elle est littéralement dire don't know how to make myfile.obj, et non don't know how to make ..\Objects\myfile.obj alors votre problème est ailleurs - quelque chose dans le makefile demande un fichier objet dans le répertoire courant.

Quelle est la règle que myfile.obj doit construire? Je suppose que dans cette règle vous omettez de spécifier $(OUTPUT_DIR)\myfile.obj comme dépendance.

0

Si vous utilisez Visual Studio, parfois vous obtenez le message d'erreur:

« ne savent pas comment faire « obj » »

j'ai pu résoudre ce problème en ouvrant « Makefile » et décommenter les lignes sous le commentaire qui dit "décommenter ceux-ci lors de la compilation dans Visual Studio 2010 pour sortir un binaire 32 bits". Trouvez le commentaire correspondant à votre version de Visual Studio et à votre architecture (32 bits/64 bits) et décommentez les lignes situées en dessous!

0

Vous devez ajouter la cible, a changé le répertoire actuel en un répertoire où les fichiers objectifs que vous voulez faire. Le fichier MakeFile exemple nmake suit. Dans l'exemple, nmake compile a.c b.c à partir du répertoire courant et place le répertoire objs $ (OBJ_FILES_DIR) et construit un SOME_STATIC.LIB dans le répertoire $ (OUTDIR).

# commmand to launch Makefile 
nmake OBJ_FILES_DIR=my_obj_dir OUTDIR=my_lib_dir 

# Makefile 
STATICLIB = SOME_STATIC.LIB 
OBJS = a.obj b.obj # objs in lib 
O = $(OBJ_FILES_DIR) 
S = $(MAKEDIR) # remember source dir where a.c b.c reside and current dir from which nmake launched. 

.PHONY: $(STATICLIB) 
.PHONY: CHDIR 

$(STATICLIB): CHDIR $(OUTDIR)$(STATICLIB) # 

CHDIR: 
    -md $(O) 
    cd $(O) 

all: $(STATICLIB) 

$(OUTDIR)$(STATICLIB): $(OBJS) 
    $(AR) $(ARFLAGS) -out:[email protected] $(OBJS) 

{$(S)}.c.obj:: 
    $(CC) $(WFLAGS) $(CFLAGS) -c $< 
Questions connexes