2012-10-06 23 views
6

Hola, decidí probar y aprender cómo crear programas a través de la línea de comandos y los archivos make en lugar de confiar en Visual Studio para que lo haga por mí. Después de familiarizarme con el proceso de compilación en archivos .obj y enlaces, pasé a NMake. Escribí un archivo make básico para tratar de compilar archivos fuente ubicados en varias carpetas en archivos .obj, vincular cada carpeta de archivos .obj en archivos .lib y luego vincular los archivos .lib a un archivo .exe.NMake Pattern Rules

CC=cl /c /EHsc /Fo 
LIB=lib /OUT: 
LINKER=link /OUT: 
EXEC_NAME=Test.exe 
DEL=del 
MAKE=nmake 
OUT=.\out 

all: $(OUT)\*.lib 
    $(LINKER)$(EXEC_NAME) *.lib 

clean: 
    $(DEL) $(OUT) 

rebuild: 
    $(MAKE) clean 
    $(MAKE) all 

$(OUT)%.lib: $(OUT)\%\*.obj 
    $(LIB)%.lib $(OUT)%\*.obj 

%(OUT)\%\: 
    $(CC)$(OUT)\%\ .\%\*.cpp 

cuando intento ejecutarlo con nmake all me dice: NMAKE : fatal error U1073: don't know how to make '.\out\*.lib'

Gracias de antemano.

Respuesta

4

Esta pregunta fue comprensiblemente ignorada durante un año y medio, pero últimamente ha atraído a 4 votaciones ascendentes.

No se ha formulado ninguna pregunta pero la pregunta implícita es: ¿Por qué no puede nmake seguir las reglas% -pattern en mi archivo MAKE?

La respuesta a esto es que MS nmake no admite reglas de% -pattern en absoluto. The documentation of MS nmake y de su inference rules se encuentra fácilmente.

GNU make y algunas otras herramientas de fabricación admiten %-pattern rules. El archivo MAKE también fallaría en GNU make debido a obvios errores.