Page 1 of 2

la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 8:12 am
by Antonio Linares
Cual es la forma más simple de construir un PRG que estemos editando ?

gracias

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 10:35 am
by VictorCasajuana
Antonio Linares wrote:Cual es la forma más simple de construir un PRG que estemos editando ?

gracias
A que te refieres con "construir un PRG"

Enviado desde mi motorola edge 20 mediante Tapatalk

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 10:41 am
by Antonio Linares
Imagina que tengo este código en pantalla:
Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   MsgInfo( "Hello world" )

return  nil

Por lo visto al pulsar Ctrl + Shift + B lanzamos el "build task" por defecto. Este task debería construir ese PRG y ejecutarlo
Entiendo que seria lo más simple. Ahora es dar con el task adecuado :-)

Tal vez haya otra forma mas simple aún

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 3:10 pm
by fgondi
Para poder compiliar cualquier prg que este en FWH, podríamos utilizar los parámetros.
Faltaría añadir en el bat condiciones para verificar si hay que incluir un archivo rc.

La tarea seria:
Code: Select all  Expand view
{
   "version": "2.0.0",
   "tasks": [
    {
        "label": "build",
        "type": "shell",
        "command": ".\\go32.bat ${file}"
    }
]
}

Donde $(file) se va a sustituir por el fichero que estas visualizando en vscode

go32.bat tendría la llamada a ese fichero pasado por parámetro "%1" y un hbp genérico para todos
Code: Select all  Expand view
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
c:\harbour\bin\hbmk2 %1 fivewin.hbp -comp=msvc


fivewin.hbp
Code: Select all  Expand view
-gui

-mt

-Ic:\fwh\include

-Lc:\fwh\lib2
-lFiveH32
-lFiveHC32

-lgdiplus
-lole32
-lOleDlg
-lversion

xhb.hbc
hbct.hbc
hbwin.hbc
hbmzip.hbc
hbziparc.hbc
hbfoxpro.hbc
hbvmmt.hbc

-ldflag=/NODEFAULTLIB:MSVCRT
 

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 3:15 pm
by fgondi

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 3:37 pm
by fgondi
Y si no quieres tener el archivo abierto, se podría hacer pidiendo el nombre por variable
Code: Select all  Expand view
   {
       "version": "2.0.0",
       "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": ".\\go32.bat ${input:variableID}"
        }
    ],
     "inputs": [
         {
           "id": "variableID",
           "type": "promptString",
           "description": "Indica el nombre del prg"
         }
       ]
    }

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 4:04 pm
by fgondi
go32.bat incluyendo el rc:
Code: Select all  Expand view
del %1.exe
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
if exist %1.rc (
  c:\harbour\bin\hbmk2 %1.prg %1.rc testvc.hbp -comp=msvc
) else (
  c:\harbour\bin\hbmk2 %1.prg testvc.hbp -comp=msvc
)
%1.exe


La tarea teniendo el archivo prg abiero:
Code: Select all  Expand view
{
   "version": "2.0.0",
   "tasks": [
    {
        "label": "build",
        "type": "shell",
        "command": "C:\\FWH\\samples\\go32.bat ${fileBasenameNoExtension}",
        "options": {
            "cwd": "${fileDirname}"
         }
    }
]
}
 


La tarea sin tener el prg abierto (con parámetro) e incluso desde cualquier carpeta
Code: Select all  Expand view
{
       "version": "2.0.0",
       "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "C:\\FWH\\Samples\\go32.bat ${input:variableID}",
            "options": {
               "cwd": "C:\\FWH\\Samples"
             }
        }
    ],
     "inputs": [
         {
           "id": "variableID",
           "type": "promptString",
           "description": "Indica el nombre del prg. sin extensión"
         }
       ]
    }
 

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 8:32 pm
by Antonio Linares
Querido Fernando,

muchas gracias por compartir y enseñar.

He hecho unas pequeñas modificaciones que me gustaria tu opinión
El fichero tasks.json lo he modificado asi:
Code: Select all  Expand view
{
  "version": "2.0.0",
  "tasks": [
   {
       "label": "build",
       "type": "shell",
       "command": "c:\\Users\\anto\\Documents\\go32.bat ${fileDirname}/${fileBasename} ${fileDirname}\\${fileBasenameNoExtension}.exe"
   }
]
}

con la idea de que go32.bat reciba dos parámetros:
Code: Select all  Expand view
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
c:\harbour\bin\hbmk2 %1 c:\users\anto\documents\fivewin.hbp -comp=msvc
%2

fivewin.hbp lo he modificado para que genere el nombre del EXE adecuado:
Code: Select all  Expand view
-o${hb_dir}
-gui
-trace

-Ic:\fwh\include

-Lc:\fwh\lib
-lFiveH32
-lFiveHC32

-lgdiplus
-lole32
-lOleDlg
-lversion

xhb.hbc
hbct.hbc
hbwin.hbc
hbmzip.hbc
hbziparc.hbc
hbfoxpro.hbc

-ldflag=/NODEFAULTLIB:MSVCRT
-ldflag=/FORCE:multiple
 

Está funcionado, con solo pulsar Ctrl + Mayus + B :-)
Si ves una forma de simplificarlo, bienvenida sea :-)

un abrazo

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 8:40 pm
by Antonio Linares
Falla si el documento no esta en c:\Users\anto\Documents...

intentado arreglarlo...

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 8:44 pm
by Antonio Linares
hbmk2 es llamado con -out:C:\Users\anto\fivedit0.exe

pero luego se intenta ejecutar c:\fwteam\samples\fivedit0.exe

Re: la forma mas simple de construir desde vscode

PostPosted: Sat Oct 01, 2022 9:17 pm
by Antonio Linares
Que macros usar en vez de -o${hb_dirname} desde fivewin.hbp que sean equivalentes a ${fileDirname}/${fileBasename} de vscode ?

Re: la forma mas simple de construir desde vscode

PostPosted: Sun Oct 02, 2022 7:20 am
by Antonio Linares
buenos dias

Esta versión parece más simple y solo usa un variable:
tasks.json
Code: Select all  Expand view
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build",
      "type": "shell",
      "command": "c:\\Users\\anto\\Documents\\go32.bat ${fileDirname}\\${fileBasenameNoExtension}",
      "problemMatcher": [
        "$harbour"
      ]
    }
  ]
}

con lo que go32.bat cambia asi:
Code: Select all  Expand view
del %1.exe
call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
if exist %1.rc (
   c:\harbour\bin\hbmk2 %1.prg %1.rc c:\users\anto\documents\fivewin.hbp -o%1 -comp=msvc
) else (
   c:\harbour\bin\hbmk2 %1.prg c:\users\anto\documents\fivewin.hbp -o%1 -comp=msvc
)
%1
 

fivewin.hbp
Code: Select all  Expand view
-gui

-Ic:\fwh\include

-Lc:\fwh\lib
-lFiveH32
-lFiveHC32

-lgdiplus
-lole32
-lOleDlg
-lversion

xhb.hbc
hbct.hbc
hbwin.hbc
hbmzip.hbc
hbziparc.hbc
hbfoxpro.hbc

-ldflag=/NODEFAULTLIB:MSVCRT
-ldflag=/FORCE:multiple
 

Re: la forma mas simple de construir desde vscode

PostPosted: Sun Oct 02, 2022 7:29 am
by Antonio Linares
Working like a champ :-)
Image

Re: la forma mas simple de construir desde vscode

PostPosted: Sun Oct 02, 2022 7:42 am
by Antonio Linares
I keep go32.bat at:
c:\Users\anto\Documents\

same folder for fivewin.hbp

wondering is those places are the righ ones or we can improve it

Re: la forma mas simple de construir desde vscode

PostPosted: Sun Oct 02, 2022 8:34 am
by Antonio Linares
gracias nuevamente Fernando

un abrazo