O que uso pra compilar:
------- C.BAT------
d:\cdrom\FONTES\build\build.exe %*
VERDADE ESTE PODE SER O BAT
O build.prg criei pra recursos não existentes no HBMK2, e pra facilitar
Limpar pasta TEMP ao trocar de projeto
IF ! Upper( cLastPath ) == Upper( hb_cwd() )
DeleteContent( "c:\temp", .F. )
DeleteContent( "c:\users\joseq\appdata\local\temp", .F. )
ENDIF
Criar/atualizar o CH com número de versão
cTxt := "#define JOSEQUINTAS_VERSAO " + ["] + Transform( cDateTime, "@R 9999.99.99.9999" ) + ["] + hb_Eol()
cTxt += "#define JOSEQUINTAS_VERSAO_RC " + Transform( cDateTime, "@R 9999,99,99,9999" ) + hb_Eol()
hb_MemoWrit( cFileName + ".ch", cTxt )
cTxt := XmlTag( "BuildNum", Ltrim( Str( nBuildNum ) ) ) + hb_Eol()
cTxt += XmlTag( "LastPath", hb_cwd() ) + hb_Eol()
cTxt += XmlTag( "BuildDate", Dtos( Date() ) ) + hb_Eol()
cTxt += XmlTag( "BuildTime", Time() ) + hb_Eol()
hb_MemoWrit( cFileName + ".xml", cTxt )
Compile( aParams )
Acrescentar alguns defaults, conforme o local, por exemplo LIBs gráficas ou assinar
STATIC FUNCTION Compile( aParams )
LOCAL oElement, cPath, cCmd := ""
cPath := Upper( hb_cwd() )
DO CASE
CASE "\HMGE\" $ cPath ; AAdd( aParams, "hmge.hbc" )
CASE "\HMG3\" $ cPath ; AAdd( aParams, "hmg3.hbc" )
CASE "\OOHG" $ cPath ; AAdd( aParams, "oohg.hbc" )
CASE "\HWGUI\" $ cPath ; AAdd( aParams, "hwgui.hbc" )
ENDCASE
IF Len( aParams ) != 0 .AND. aParams[ 1 ] == "/cmd"
hb_ADel( aParams, 1, .T. )
ELSEIF Len( Directory( "*.hbp" ) ) != 0
AAdd( aParams, "*.hbp" )
ELSEIF Len( Directory( "*.prg" ) ) != 0
Aadd( aParams, "*.prg" )
AAdd( aParams, "*.rc" )
ELSE
? hb_cwd()
Inkey(0)
ENDIF
AAdd( aParams, "-m" )
AAdd( aParams, "-n" )
IF ! "\ALLGUI\" $ cPath
IF aScan( aParams, { | e | Left( e, 2 ) == "-w" } ) == 0
AAdd( aParams, "-w3" )
ENDIF
IF aScan( aParams, { | e | Left( e, 3 ) == "-es" } ) == 0
AAdd( aParams, "-es2" )
ENDIF
ENDIF
AAdd( aParams, "-workdir=c:\temp" )
AAdd( aParams, "-compr" )
AAdd( aParams, "-strip" )
AAdd( aParams, "-mt" )
AAdd( aParams, "-quiet" )
//AAdd( aParams, "-q0" )
AAdd( aParams, "-ge1" )
AAdd( aParams, "-I" + hb_FNameDir( hb_ProgName() ) )
cCmd += "HBMK2 "
FOR EACH oElement IN aParams
cCmd += oElement + " "
NEXT
cCmd := ;
hb_ProgName() + " %*" + hb_Eol() + ;
cCmd + hb_Eol()
DO CASE
CASE "\SJPA\" $ cPath .AND. File( "..\sjpa.exe" ); cCmd += "assina ..\sjpa.exe" + hb_Eol()
CASE "\HAROLDO\" $ cPath .AND. File( "hl.exe" ); cCmd += "assina hl.exe" + hb_Eol()
CASE "\LABOROIL\" $ cPath .AND. File( "nfe.exe" ); cCmd += "assina nfe.exe" + hb_Eol()
CASE "\BUILD\" $ cPath .AND. File( "build.exe" ); cCmd += "assina build.exe" + hb_Eol()
CASE "\INTEGRA\" $ cPath .AND. File( "jpa.exe" ); cCmd += "assina jpa.exe" + hb_Eol()
ENDCASE
hb_MemoWrit( "d:\tools\util\c.bat", cCmd )
RETURN NIL
E por fim o arquivo de projeto, no formato do HBMK2, que pode conter projeto e subprojetos.
#josequintas\josequintas.hbp
#sefazclass\sefazclass.hbp
josequintas\main\jpa.prg
*.prg
josequintas\prg\*.prg
-oJPA
jpa.rc
josequintas.hbc
hbnetio.hbc
-workdir=c:\temp
-m
-n
-es2
-w3
-compr
-inc
-strip
-mt
-quiet
-jobs={NUMBER_OF_PROCESSORS}
-ge1
-i.
-i..\build
-beep
#----------- nos tempos do W98
#-winuni
Só digito C <ENTER> a não ser que seja algo fora do normal.
Isso funciona pra MINGW, BCC, MSVC, seja o que for - Lógico, BCC não, porque Harbour 3.4 não compila em BCC, e mesmo se compilasse eu não usaria BCC. MSVC funciona porque ainda tenho aqui instalado, mas não uso.
c -comp=msvc
c -comp=bcc
c -comp=mingw
eventualmente uso:
c /cmd fonteprg
ou
hbmk2 fonte.prg
ou nas pastas de samples de OOHG, HMG, HMG EXtended, HWGUI
c oohg.hbc
se usasse fivewin....
c fivewin.hbc
isso se não tiver HBP já criado....