2009-06-02 20 views
6

Tengo todos mis archivos fuente en la carpeta Fuente, El archivo MAKE está en la carpeta Makefile y quiero que todos los archivos de objetos se coloquen en la carpeta Objetos. Es un proyecto de C en el que estoy trabajando. Todas estas tres carpetas están en una carpeta llamada Proyecto.nmake Archivo Makefile a Colocar archivos de objeto en un directorio separado

carpeta de proyecto contiene: Fuente Makefile objetos

iam tratando de encontrar una manera de conseguir el makefile para compilar fuente de la carpeta de origen, he intentado usar:

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

pero esto no funciona, termino con un mensaje de error mientras dice que no sé cómo hacer myfile.obj

+0

Agregue la pieza que especifica qué debe generar el archivo MAKE. – Bahbar

Respuesta

0

Si se don't know how to make myfile.obj diciendo literalmente, y no don't know how to make ..\Objects\myfile.obj entonces su problema está en otra parte - algo en el makefile está pidiendo un archivo objeto en el directorio actual.

¿Cuál es la regla que necesita myfile.obj para compilar? Supongo que en esa regla no está especificando $(OUTPUT_DIR)\myfile.obj como la dependencia.

0

Si está utilizando Visual Studio, a veces recibe el mensaje de error:

"no saben cómo hacer 'obj'"

yo era capaz de resolver esto mediante la apertura 'Makefile' y eliminar las líneas debajo del comentario que dice "Descomentar estas al compilar en Visual Studio 2010 para generar un binario de 32 bits". ¡Encuentra el comentario que corresponde a tu versión de Visual Studio y tu arquitectura (32 bits/64 bits) y descomenta las líneas debajo de eso!

0

Debería agregar el objetivo, cambió el directorio actual a un directorio donde los archivos de objetivos que desea crear. El archivo nmake sample Makefile sigue. En la muestra nmake compila a.c b.c desde el directorio actual y coloca el directorio objs $ (OBJ_FILES_DIR) y crea un SOME_STATIC.LIB en el directorio $ (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 $< 
Cuestiones relacionadas