como compilar Varios PRG
como compilar Varios PRG
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.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: como compilar Varios PRG
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.
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
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.
Voy a lanzar eso si otra pregunta como convertir mis .OBJ de 16 a .32 bits.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: como compilar Varios PRG
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
-
- Posts: 115
- Joined: Sat Mar 07, 2009 9:36 pm
- Location: Argentina
- Contact:
Re: como compilar Varios PRG
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.
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.