Harbour proporciona una potente utilidad make hbmk2.exe pero esta dise帽ada para ser usado desde una ventana de consola, por lo que pens茅 en proporcionarle un interface visual para que su uso sea a煤n mas sencillo 
Este es un primer prototipo, muy incompleto, pero tal vez quieras probarlo, dar ideas, etc. gracias
vhb.prg

Este es un primer prototipo, muy incompleto, pero tal vez quieras probarlo, dar ideas, etc. gracias
vhb.prg
#include "FiveWin.ch"
//----------------------------------------------------------------------------//
function BuildWindow()
聽 聽local oDlg, oGet1, cPrgName := Space( 20 ), oSay3, oFld1, oSay2, oBtn1, oBtn2
聽 聽local cResult, oResult, cPath, nRetCode
聽 聽SetDlgGradient( { { 1, RGB( 199, 216, 237 ), RGB( 237, 242, 248 ) } } )
聽 聽
聽 聽DEFINE DIALOG oDlg TITLE "Visual make for Harbour" ;
聽 聽 聽 SIZE 600, 500
聽 聽@ 16, 聽16 SAY oSay2 PROMPT "Main PRG" SIZE 聽30, 9 PIXEL OF oDlg
聽 聽@ 25, 16 GET oGet1 VAR cPrgName SIZE 120, 12 PIXEL OF oDlg ;
聽 聽 聽 ACTION oGet1:VarPut( cGetFile( "*.prg" ) )
聽 聽@ 50, 聽16 SAY oSay3 PROMPT "Additional" SIZE 30, 9 PIXEL OF oDlg
聽 聽@ 60, 16 FOLDER oFld1 PROMPTS "PRGs", "OBJs", "LIBs" ;
聽 聽 聽 SIZE 200, 100 PIXEL OF oDlg
聽 聽@ 22, 230 BUTTON oBtn1 PROMPT "&Build" ;
聽 聽 聽 SIZE 60, 20 PIXEL OF oDlg ;
聽 聽 聽 ACTION ( MemoWrit( "go.bat", "set path=c:\bcc582\bin" + CRLF + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"c:\harbour\bin\hbmk2 " + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"-comp=bcc " + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"-ic:\fwteam\include " + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"-lfiveh.lib " + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"-lfivehc.lib " + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"-Lc:\fwteam\lib " + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"-lc:\bcc582\lib\psdk\psapi.lib " + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"xhb.hbc " + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽"-gtgui " + ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽AllTrim( cPrgName ) ),;
聽 聽 聽 聽 聽 聽 聽 聽nRetCode := WaitRun( "go.bat > out.log", 0 ),;
聽 聽 聽 聽 聽 聽 聽 聽oResult:SetText( GetError( nRetCode ) + CRLF + MemoRead( "out.log" ) ),;
聽 聽 聽 聽 聽 聽 聽 聽WaitRun( cFileNoExt( cPrgName ) ),;
聽 聽 聽 聽 聽 聽 聽 聽hb_SetEnv( "path", cPath ) )
聽 聽@ 48, 230 BUTTON oBtn2 PROMPT "&Cancel" ;
聽 聽 聽 SIZE 60, 20 PIXEL OF oDlg ;
聽 聽 聽 ACTION oDlg:End()
聽 聽@ 170, 16 SAY oSay3 PROMPT "Result" SIZE 30, 9 PIXEL OF oDlg
聽 聽@ 180, 16 GET oResult VAR cResult MEMO ;
聽 聽 聽 SIZE 200, 60 PIXEL OF oDlg
聽 聽ACTIVATE DIALOG oDlg CENTERED
return oDlg
//----------------------------------------------------------------------------//
function GetError( nError )
聽 聽do case
聽 聽 聽 case nError == 0
聽 聽 聽 聽 聽 聽return "Ok"
聽 聽
聽 聽 聽 case nError == 2
聽 聽 聽 聽 聽 聽return "unknown compiler"
聽 聽 聽 聽 聽 聽
聽 聽 聽 case nError == 6
聽 聽 聽 聽 聽 聽return "failed in compilation (Harbour, C compiler, Resource compiler)"
聽 聽 聽 聽 聽
聽 聽 聽 case nError == 7
聽 聽 聽 聽 聽 聽return "failed in final assembly (linker or library manager)" 聽 聽 聽 聽
聽 聽 聽 聽 聽
聽 聽endcase
聽 聽
return Str( nError )
//----------------------------------------------------------------------------//

