Ayuda..... NMAKE II

Ayuda..... NMAKE II

Postby El Loco » Mon Sep 17, 2012 8:27 pm

Colegas, alguien tendría algún ejemplo para nMake que funcione, y que tome los prg en un directorio especifico. Ej ".\Source" y los obj los deje en otro (Ej. ".\Obj)
Hace días que lo intento, y no hay caso.
El ej. que propone Antonio no me funciona
viewtopic.php?f=6&t=22964&p=122881&hilit=nmake#p122881

Desde ya muchísimas gracias.
Un abrazo. Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Ayuda..... NMAKE II

Postby Antonio Linares » Tue Sep 18, 2012 7:59 pm

Miguel,

Este lo he construido recientemente para Visual Studio 2010:

go.bat
Code: Select all  Expand view
c:\"Program Files (x86)\Microsoft Visual Studio 10.0"\VC\bin\nmake -ftest.mak
if errorlevel==0 one.exe
 


test.mak
Code: Select all  Expand view
#Microsoft VS2010 make sample, (c) FiveTech Software 2010

HBDIR=c:\harbour
FWDIR=c:\fwh
VCDIR="c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC"
SDKDIR="c:\Program Files\Microsoft SDKs\Windows\v7.0A"

.SUFFIXES: .prg .c .obj .rc .res

one.exe : one.obj two.obj three.obj one.res
   echo one.obj two.obj three.obj > msvc.tmp

   echo $(FWDIR)\lib\FiveH32.lib $(FWDIR)\lib\FiveHC32.lib >> msvc.tmp

   echo $(HBDIR)\lib\vc32\hbrtl.lib    >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbvm.lib     >> msvc.tmp
   echo $(HBDIR)\lib\vc32\gtgui.lib    >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hblang.lib   >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbmacro.lib  >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbrdd.lib    >> msvc.tmp
   echo $(HBDIR)\lib\vc32\rddntx.lib   >> msvc.tmp
   echo $(HBDIR)\lib\vc32\rddcdx.lib   >> msvc.tmp
   echo $(HBDIR)\lib\vc32\rddfpt.lib   >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbsix.lib    >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbdebug.lib  >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbcommon.lib >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbpp.lib     >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbwin.lib    >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbcplr.lib   >> msvc.tmp
   echo $(HBDIR)\lib\vc32\xhb.lib      >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbpcre.lib   >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbct.lib     >> msvc.tmp
   echo $(HBDIR)\lib\vc32\hbcpage.lib  >> msvc.tmp

   echo $(SDKDIR)\lib\kernel32.lib  >> msvc.tmp
   echo $(SDKDIR)\lib\user32.lib    >> msvc.tmp
   echo $(SDKDIR)\lib\gdi32.lib     >> msvc.tmp
   echo $(SDKDIR)\lib\winspool.lib  >> msvc.tmp
   echo $(SDKDIR)\lib\comctl32.lib  >> msvc.tmp
   echo $(SDKDIR)\lib\comdlg32.lib  >> msvc.tmp
   echo $(SDKDIR)\lib\advapi32.lib  >> msvc.tmp
   echo $(SDKDIR)\lib\shell32.lib   >> msvc.tmp
   echo $(SDKDIR)\lib\ole32.lib     >> msvc.tmp
   echo $(SDKDIR)\lib\oleaut32.lib  >> msvc.tmp
   echo $(SDKDIR)\lib\uuid.lib      >> msvc.tmp
   echo $(SDKDIR)\lib\odbc32.lib    >> msvc.tmp
   echo $(SDKDIR)\lib\odbccp32.lib  >> msvc.tmp
   echo $(SDKDIR)\lib\iphlpapi.lib  >> msvc.tmp
   echo $(SDKDIR)\lib\mpr.lib       >> msvc.tmp
   echo $(SDKDIR)\lib\version.lib   >> msvc.tmp
   echo $(SDKDIR)\lib\wsock32.lib   >> msvc.tmp
   echo $(SDKDIR)\lib\msimg32.lib   >> msvc.tmp
   echo $(SDKDIR)\lib\oledlg.lib    >> msvc.tmp
   echo $(SDKDIR)\lib\psapi.lib     >> msvc.tmp
   echo $(SDKDIR)\lib\gdiplus.lib   >> msvc.tmp
   echo $(SDKDIR)\lib\winmm.lib     >> msvc.tmp

   IF EXIST one.res echo one.res >> msvc.tmp

   SET LIB=$(VCDIR)\lib
   SET PATH=$(VCDIR)\bin
   link @msvc.tmp /nologo /subsystem:windows /force:multiple /NODEFAULTLIB:libc > link.log
   @type link.log
   @del one.c
   @del two.c
   @del three.c
   @del msvc.tmp

one.obj   : one.c
two.obj   : two.c
three.obj : three.c

one.c   : one.prg
two.c   : two.prg
three.c : three.prg

one.res : one.rc
   c:\vc98\bin\rc.exe -r -d__FLAT__ one.rc

.prg.c:
   $(HBDIR)\bin\harbour $< /n /i$(FWDIR)\include;$(HBDIR)\include

.c.obj:
   SET PATH=$(VCDIR)\bin
   cl.exe -c -TP -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include $<
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41394
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda..... NMAKE II

Postby El Loco » Tue Sep 18, 2012 8:13 pm

Antonio, tenes razón, quizás me exprese mal, tu ejemplo funciona, a lo que me refería es como hago para indicarle en donde buscar los prg y en donde grabar los obj.
Suponiendo tener una estructura de directorios similar a esta:
\Prueba
\Source
\Obj
\Resource
\Etc.

He buscado manuales del nMake, y creo haber probado casi todo..... y no hay caso no logro hacerlo funcionar.
Si dejo todo en un mismo directorio (.bat .mak .prg .rc) si funciona de maravillas.
Desde ya muchísimas gracias por haberme contestado.
Un gran abrazo.
Miguel
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Ayuda..... NMAKE II

Postby Antonio Linares » Tue Sep 18, 2012 8:29 pm

Prueba a poner los paths aqui:

one.obj : one.c
two.obj : two.c
three.obj : three.c

one.c : one.prg
two.c : two.prg
three.c : three.prg
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41394
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda..... NMAKE II

Postby Antonio Linares » Tue Sep 18, 2012 8:34 pm

Miguel,

Aqui está la documentación de nmake. la encontré por la red:

http://www.scribd.com/doc/106291755/Nmake-Documentation
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41394
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda..... NMAKE II

Postby El Loco » Tue Sep 18, 2012 10:03 pm

Ya lo había probado:


{.\Obj}\test.obj : {.\Source}\test.c
{.\Obj}\one.obj : {.\Source}\one.c

{.\Source}\test.c : {.\Source}\test.prg
{.\Source}\one.c : {.\Source}\one.prg
--------------------------------------------------------------
... y así

APP_OBJ_DIR= .\Obj
APP_PRG_DIR= .\Source
...
...

{$(APP_OBJ_DIR)}\test.obj : {$(APP_PRG_DIR)}\test.c
{$(APP_OBJ_DIR)}\one.obj : {$(APP_PRG_DIR)}\one.c

{$(APP_PRG_DIR)}\test.c : {$(APP_PRG_DIR)}\test.prg
{$(APP_PRG_DIR)}\one.c : {$(APP_PRG_DIR)}\one.prg
--------------------------------------------------------------------------
y no funciona, siempre tira el error:
NMAKE : fatal error U1077: 'F:\wFH64\vc64\bin\link' : return code '0x487'

los path están correctos...
Voy a revisar el manual que me indicas, pero me parece que es el mismo que yo conseguí.

Un gran abrazo.
Miguel

PD. Mañana te estaría solicitando el FTDN como lo prometí. Tengo que terminar de ver como es la compra en el exterior con las nuevas normativas que no esta SOMETIENDO nuestra Sra. Presidenta.
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Ayuda..... NMAKE II

Postby lucasdebeltran » Fri Feb 22, 2013 12:17 pm

Hola,

Por favor, ¿cómo lo solucionaste?. A mí me pasa igual, quiero indicarte varios subdirectorios.

Muchas gracias.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Ayuda..... NMAKE II

Postby Antonio Linares » Fri Feb 22, 2013 12:22 pm

Lucas,

Esta debiera ser la forma de hacerlo:

Code: Select all  Expand view
{.\Obj}\test.obj : {.\Source}\test.c
{.\Obj}\one.obj : {.\Source}\one.c
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41394
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda..... NMAKE II

Postby lucasdebeltran » Fri Feb 22, 2013 12:38 pm

Antonio,

No funciona lo siento.

Te pongo todo el .mak

Code: Select all  Expand view
HBDIR=c:\harbourmsvc2010
FWDIR=c:\fwh
VCDIR="c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC"
SDKDIR="c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A"

.SUFFIXES: .prg .c .obj

test.lib : {.\Obj}\one.obj {.\Obj}\two.obj {.\Obj}\three.obj {.\Obj}\myc.obj
   if not exist test.lib $(VCDIR)\bin\lib /DEF:test.def /OUT:test.lib
   $(VCDIR)\bin\lib test.lib /OUT:test.lib {.\Obj}\one.obj {.\Obj}\two.obj {.\Obj}\three.obj {.\Obj}\myc.obj
   

{.\Obj}\one.obj   : {.\Source}\one.c
{.\Obj}\two.obj   : {.\Source}\two.c
{.\Obj}\three.obj : {.\Source}\three.c
{.\Obj}\myc.obj   : {.\Source}\myc.c


{.\Obj}\one.c   : {.\Source}\one.prg
{.\Obj}\two.c   : {.\Source}\two.prg
{.\Obj}\three.c : {.\Source}\three.prg


.prg.c:
   $(HBDIR)\bin\harbour $< /n /i$(FWDIR)\include;$(HBDIR)\include

.c.obj:
   SET PATH=$(VCDIR)\bin
   cl.exe -c -TP -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include $<
 




Mil gracias.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Ayuda..... NMAKE II

Postby Antonio Linares » Fri Feb 22, 2013 1:54 pm

Lucas,

Has probado a especificar el path completo sin los { } ?

.\Obj\one.obj : .\Source\one.c
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41394
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda..... NMAKE II

Postby lucasdebeltran » Fri Feb 22, 2013 2:46 pm

Antonio,

Tampoco, sigue fallando.

Alguna macro rara tiene que ser.

Mil gracias de verdad.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Ayuda..... NMAKE II

Postby cnavarro » Fri Feb 22, 2013 4:06 pm

Quizás esto te sirva
http://support.microsoft.com/kb/60340/es

No es exactamente lo que necesitas pero puede ser util
Un saludo
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6504
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Ayuda..... NMAKE II

Postby Antonio Linares » Fri Feb 22, 2013 5:24 pm

Cristobal,

muchas gracias, muy buen ejemplo :-)

Code: Select all  Expand view
# macros

objdir = c:\lib
wrkdir = c:\work
list   = $(objdir)\test1.obj $(objdir)\test2.obj $(objdir)\test3.obj

# inference rules

# compile
# $< represents the dependent file.
# $(*F) represents the targets base name.
# $(*R) represents the targets base name and directory.

{$(wrkdir)}.c{$(objdir)}.obj:
   cl /c $<
   copy $(*F).obj $(*R).obj
   erase $(*F).obj

# link
# $(**R) represents all the dependents including directories.

{$(objdir)}.obj{}.exe:
   link $(**R);

# target-dependencies
# $$(@B) represents the base name of the current target.

test1.exe : $(list)

$(objdir)\*.obj : $(wrkdir)\$$(@B).c $(wrkdir)\test1.h $(wrkdir)\test2.h
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41394
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Ayuda..... NMAKE II

Postby lucasdebeltran » Fri Feb 22, 2013 6:00 pm

Lo siento, me sigue sin funcionar.

Ese ejemplo no funciona.

Y este tampoco.

Si quieres puedo enviarte los .prg para que te sea más fácil reproducir el entorno por favor.

Muchas gracias.

Code: Select all  Expand view
# macros

objdir = .\obj
wrkdir = .\source
list   = $(objdir)\one.obj $(objdir)\two.obj $(objdir)\three.obj $(objdir)\myc.obj



HBDIR=c:\harbourmsvc2010
FWDIR=c:\fwh
VCDIR="c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC"
SDKDIR="c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A"



.SUFFIXES: .prg .c .obj


test.lib : $(objdir)\one.obj $(objdir)\two.obj $(objdir)\three.obj $(objdir)\myc.obj
   if not exist test.lib $(VCDIR)\bin\lib /DEF:test.def /OUT:test.lib
   $(VCDIR)\bin\lib test.lib /OUT:test.lib $(objdir)\one.obj $(objdir)\two.obj $(objdir)\three.obj $(objdir)\myc.obj
   


$(objdir)\one.obj   : $(objdir)\one.c
$(objdir)\two.obj   : $(objdir)\two.c
$(objdir)\three.obj : $(objdir)\three.c
$(objdir)\myc.obj   : $(objdir)\myc.c

$(objdir)\one.c   : $(wrkdir)\one.prg
$(objdir)\two.c   : $(wrkdir)\two.prg
$(objdir)\three.c : $(wrkdir)\three.prg


.prg.c:
   $(HBDIR)\bin\harbour $< /n /i$(FWDIR)\include;$(HBDIR)\include

{$(wrkdir)}.c{$(objdir)}.obj:
   SET PATH=$(VCDIR)\bin
   cl.exe -c -TP -W3 -I$(HBDIR)\include -I$(SDKDIR)\include -I$(VCDIR)\include $<
   copy $(*F).obj $(*R).obj
   erase $(*F).obj


 
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Ayuda..... NMAKE II

Postby lucasdebeltran » Fri Feb 22, 2013 6:10 pm

Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 28 guests