Page 1 of 1

como compilar Varios PRG

PostPosted: Mon Aug 09, 2010 12:06 pm
by jgayoso
Hola, tengo un sistema en Clipper que quiero llevar a FiveWin tengo instalado todo, funcionando. Los ejemplos los puedo compilar y funcionan. El problema que tengo es que en ninguna parte sale como compilar y linkear varios PRGs (un sistema entero). Si alguien me puede ayudar con un ejemplo, suponiendo que tengo los siguientes programas menu.prg, pro1.prg prog2.prg, prog3.prg, prog4.prg. Quedo a la espera de vuestra información. :cry:

Re: como compilar Varios PRG

PostPosted: Tue Aug 10, 2010 7:07 am
by Antonio Linares
Jgayoso,

Tienes dos opciones básicas: una es usar un fichero BAT, que sería el build.bat proporcionado con FiveWin ampliado para soportar más de un PRG. Lo que se hace es compilar uno a uno cada PRG y luego al enlazar se especifican todos los OBJs. La desventaja de este sistema es que siempre compilas todo y eso puede ser algo lento.

Otra opción es usar un fichero "make". La ventaja es que solo se compilará el PRG que hayas modificado, los demás no. Y asi el proceso es más rápido. Tienes un ejemplo en la carpeta makes de FiveWin.

Finalmente existen programas de ayuda que lo hacen todo de forma automatica como xMate. Busca en estos foros por xMate y encontraras bastante información.

Re: como compilar Varios PRG

PostPosted: Tue Aug 10, 2010 7:31 pm
by jgayoso
Bien maestro, me ha resultado todo hasta el momento, no he llegado a puerto de generar el .EXE, pero voy bien encamidado, (creo). Ya estoy compilando mi sistema en xMate y todo bien.

Voy a lanzar eso si otra pregunta como convertir mis .OBJ de 16 a .32 bits.

Re: como compilar Varios PRG

PostPosted: Thu Sep 02, 2010 3:54 pm
by Antonio Linares
No puedes convertir un OBJ de 16 bits a 32 bits, lo que has de hacer es compilar el fichero fuente original, bien sea un PRG ó un fichero en C, con Harbour/xHarbour y un compilador de C de 32 bits como el bcc32.exe y asi obtendrás tus OBJs en 32 bits :-)

Re: como compilar Varios PRG

PostPosted: Wed Oct 26, 2011 10:40 am
by juan carlos bellucci
Hola....
Primero un archivo.bat

que puede ser así


SET Path=C:\xHARBOUR\BIN;C:\BCC\BIN
SET LIB=C:\xHARBOUR\LIB;C:\BCC\LIB;C:\FW\LIB
SET INCLUDE=C:\xHARBOUR\INCLUDE;C:\BCC\INCLUDE;C:\FW\INCLUDE
SET OBJ=C:\BCC\LIB





if not exist obj md obj
c:\bcc\bin\make -flinkea.rmk


///////////////////////////////////////////////////////
// luego en otro archivo //
///////////////////////////////////////////////////////
// linkea.rmk
///////////////////////////////////////////////////////


SET Path=C:\xHARBOUR\BIN;C:\BCC\BIN
SET LIB=C:\xHARBOUR\LIB;C:\BCC\LIB;C:\FW\LIB
SET INCLUDE=C:\xHARBOUR\INCLUDE;C:\BCC\INCLUDE;C:\FW\INCLUDE
SET OBJ=C:\BCC\LIB





HBDIR=c:\dharbour

BCDIR=c:\bcc
FWDIR=c:\fwh

REM if "%FWDIR%" == "" set FWDIR=c:\fw
REM if "%XHBDIR%" == "" set XHBDIR=c:\xHarbour

set GT=gtgui


#change these paths as needed
.path.PRG = .\prg
.path.OBJ = .\obj
.path.CH = $(FWDIR)\include;$(HBDIR)\include;$(BCDIR)\include
.path.C = .\.c
.path.rc = .\

#importante: Use Letras Mayusculas Para losArchivos y Sus extensiones, en las siguiente dos cuerpos!

PRG = \
Personal.PRG \
Perso00.PRG

C = \


PROJECT : Personal.exe

Personal.exe : $(PRG:.PRG=.OBJ) $(C:.C=.OBJ) Personal.res
echo off
echo $(BCDIR)\bin\c0w32.obj + > b32.bc
echo obj\Personal.obj + >> b32.bc
echo obj\Perso00.obj, + >> b32.bc
echo Personal.exe, + >> b32.bc
echo Personal.map, + >> b32.bc

echo c:\fw\lib\Fivehx.lib c:\fw\lib\FiveHC.lib + >> b32.bc
Rem nuevo

echo c:\dharbour\lib\rtl.lib + >> b32.bc
echo c:\dharbour\lib\vm.lib + >> b32.bc
echo c:\dharbour\lib\gtgui.lib + >> b32.bc
echo c:\dharbour\lib\lang.lib + >> b32.bc
echo c:\dharbour\lib\macro.lib + >> b32.bc
echo c:\dharbour\lib\rdd.lib + >> b32.bc
echo c:\dharbour\lib\dbfntx.lib + >> b32.bc
echo c:\dharbour\lib\dbfcdx.lib + >> b32.bc
echo c:\dharbour\lib\dbffpt.lib + >> b32.bc
echo c:\dharbour\lib\hbsix.lib + >> b32.bc
echo c:\dharbour\lib\debug.lib + >> b32.bc
echo c:\dharbour\lib\common.lib + >> b32.bc
echo c:\dharbour\lib\pp.lib + >> b32.bc
echo c:\dharbour\lib\pcrepos.lib + >> b32.bc
echo c:\dharbour\lib\ct.lib + >> b32.bc
echo c:\dharbour\lib\zlib.lib + >> b32.bc


rem Uncomment these two lines to use Advantage RDD
rem echo %hdir%\lib\rddads.lib + >> b32.bc
rem echo %hdir%\lib\Ace32.lib + >> b32.bc

echo $(BCDIR)\lib\cw32.lib + >> b32.bc
echo $(BCDIR)\lib\import32.lib + >> b32.bc
echo $(BCDIR)\lib\uuid.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\odbc32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\rasapi32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\nddeapi.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\msimg32.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\psapi.lib + >> b32.bc
echo $(BCDIR)\lib\psdk\iphlpapi.lib, >> b32.bc


rem --------------------------------------

IF EXIST Personal.res echo Personal.res >> b32.bc

$(BCDIR)\bin\ilink32 -Gn -aa -Tpe -s @b32.bc
del b32.bc

.PRG.OBJ:
$(HBDIR)\bin\harbour $< /N /W /Oobj\ /I$(FWDIR)\include;$(HBDIR)\include
$(BCDIR)\bin\bcc32 -c -tWM -I$(HBDIR)\include -oobj\$& obj\$&.c

.C.OBJ:
echo -c -tWM -D__HARBOUR__ -DHB_API_MACROS > tmp
echo -I$(HBDIR)\include;$(FWDIR)\include >> tmp
$(BCDIR)\bin\bcc32 -oobj\$& @tmp $&.c
del tmp

Personal.res : Personal.rc
$(BCDIR)\bin\brc32.exe -r Personal.rc




copialo tal cual y anda agregando todos los prg de la misma forma que aqui esta escrito, siempre prestando atencion en la coma que solo va en el ultimo xxxx.obj. espero haberte sido util.

Nota Ejemplo tomado de Fivetech solo se agregaron algunas costas.