Olá a todos !
Gostaria de pedir a ajuda ou ideias dos colegas em relação a uma mudança de comportamento no hbmake após atualizarmos a versão do xHarbour.
1. Descrição do Problema
Na versão xHarbour 1.2.3, ao realizar a compilação utilizando o hbmake (script .bc), sempre que ocorria qualquer erro de compilação ou linkagem, a ferramenta gerava automaticamente um arquivo com o relatório do erro e o abria direto no Notepad (Bloco de Notas).
Porém, ao atualizar para o xHarbour 1.3.2 Intl. (SimpLex) (Build 20260818), isso parou de funcionar. O erro é exibido apenas na tela/console (ou o processo simplesmente não gera/abre o log em arquivo).
O que já tentei (sem sucesso)
Redirecionamento de saída no terminal/script batch (> e 2>):
Tentamos capturar tanto a saída padrão quanto os erros:
DOS
hbmake meu_projeto.bc > erro.log 2>&1
Resultado: O arquivo erro.log fica vazio ou captura apenas o cabeçalho do hbmake, mas não captura as mensagens do compilador C / linkador chamados internamente pelo hbmake.
Flags de compilação do xHarbour (/p, /w, /q):
Testei usar a flag /p para gerar o arquivo .ppo e depurar expansões de macros, além de tentar ajustar o nível de warning (/w1 .. /w3).
Resultado: O .ppo é gerado normalmente, mas o log de erros geral da compilação continua sem ser gravado/aberto no Bloco de Notas.
Direcionamento de saída com a opção /o:
Usamos a opção /o<caminho> para direcionar os arquivos objeto/C gerados para uma pasta específica.
Resultado: Organiza os arquivos compilados na pasta de destino, mas não altera o comportamento do log de erro.
Existe algo que estou deixando de fazer?
Segue arquivo:
#BCC
VERSION=BCB.01
!ifndef CC_DIR
CC_DIR = $(MAKE_DIR)
!endif
!ifndef HB_DIR
HB_DIR = $(HARBOUR_DIR)
!endif
RECURSE= NO
EDITOR=EDIT
SHELL =
COMPRESS = NO
EXTERNALLIB = NO
XFWH = YES
FILESTOADD = 10
WARNINGLEVEL = 0
USERDEFINE =
USERINCLUDE =
EDITOR = Notepad
FWH = C:\fwh
GUI = YES
MT = NO
CLA = CLASSES
SRC = SOURCE
OBJ = obj
PROJECT = WTESTE.EXE $(PR)
OBJFILES = $(OBJ)\CONECT.obj //
$(OBJ)\FUNC001.OBJ $(OBJ)\FUNC002.OBJ $(OBJ)\FUNC003.OBJ $(OBJ)\FUNC004.OBJ $(OBJ)\FUNC005.OBJ $(OBJ)\FUNC006.OBJ $(OBJ)\FUNC007.OBJ $(OBJ)\FUNC008.OBJ $(OBJ)\FUNC009.OBJ $(OBJ)\FUNC010.OBJ $(OBJ)\FUNC011.OBJ //
$(OBJ)\DISPLAY.OBJ $(OBJ)\FUNCXLS.OBJ $(OBJ)\FUNCDBS.OBJ //
$(OBJ)\TCRW.obj $(OBJ)\t7zip.obj //
$(OBJ)\TCALENDA.obj $(OB)
PRGFILES = $(SRC)\CONECT.PRG //
$(SRC)\FUNC001.PRG $(SRC)\FUNC002.PRG $(SRC)\FUNC003.PRG $(SRC)\FUNC004.PRG $(SRC)\FUNC005.PRG $(SRC)\FUNC006.PRG $(SRC)\FUNC007.PRG $(SRC)\FUNC008.PRG $(SRC)\FUNC009.PRG $(SRC)\FUNC010.PRG $(SRC)\FUNC011.PRG //
$(SRC)\DISPLAY.PRG $(SRC)\FUNCXLS.PRG $(SRC)\FUNCDBS.PRG //
$(SRC)\TCRW.PRG $(CL7)\t7zip.PRG //
$(CLA)\TCALENDA\TCALENDA.PRG $(PS)
OBJCFILES = $(OBJ)\SEVENZIP.obj $(OBJ)\wchar2str.obj $(OBC)
CFILES = $(CL7)\SEVENZIP.C $(VRT)\wchar2str.C $(CF)
RESFILES =
RESDEPEN =
TOPMODULE = CONNECT.PRG
LIBFILES = $(FWH)\lib\fivehx.lib $(FWH)\lib\fivehc.lib $(FWH)\lib\libmysql.lib $(FWH)\lib\pgsql.lib $(FWH)\lib\libpq.lib //
C:\LIBS\BROWSE17\LIB\TWBRWX32.LIB //
lang.lib vm.lib rtl.lib rdd.lib macro.lib pp.lib dbfntx.lib dbfcdx.lib dbffpt.lib common.lib gtgui.lib codepage.lib ct.lib tip.lib pcrepos.lib //
hsx.lib hbsix.lib zlib.lib hbcc.lib libmisc shell32.lib uxtheme.lib hbzip.lib hbmzip.lib sevenzip.lib png.lib //
C:\Bcc77\Lib\PSDK\MSIMG32.LIB C:\Bcc77\Lib\PSDK\PSAPI.LIB C:\Bcc77\Lib\PSDK\iphlpapi.LIB C:\Bcc77\Lib\PSDK\odbc32.Lib
EXTLIBFILES =
DEFFILE =
HARBOURFLAGS = -w -a -m -q0
CFLAG1 = -OS $(SHELL) $(CFLAGS) -d -c -L$(HB_DIR)\lib;$(FWH)\lib
CFLAG2 = -I$(HB_DIR)\include;$(CC_DIR)\include
RFLAGS =
LFLAGS = -L$(CC_DIR)\lib\obj;$(CC_DIR)\lib;$(HB_DIR)\lib -Gn -M -m -s -Tpe -x -aa -L$(FWH)\lib
IFLAGS =
LINKER = ilink32
ALLOBJ = c0w32.obj $(OBJFILES) $(OBJCFILES)
ALLRES = $(RESDEPEN)
ALLLIB = $(LIBFILES) import32.lib cw32.lib
.autodepend
#DEPENDS
#COMMANDS
.cpp.obj:
$(CC_DIR)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $**
.c.obj:
$(CC_DIR)\BIN\bcc32 -I$(HB_DIR)\include $(CFLAG1) $(CFLAG2) -o$* $**
.prg.obj:
$(HB_DIR)\bin\harbour -DEXPORT -n -go -I$(HB_DIR)\include $(HARBOURFLAGS) -I$(FWH)\include -o$* $**
.rc.res:
$(CC_DIR)\BIN\brcc32 $(RFLAGS) $<
#BUILD
$(PROJECT): $(CFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE)
$(CC_DIR)\BIN\$(LINKER) @&&!
$(LFLAGS) +
$(ALLOBJ), +
$(PROJECT),, +
$(ALLLIB), +
$(DEFFILE), +
$(ALLRES)
!