ExataDev FiveWinCompile projetos FiveWin + xHarbour sem sair do VS Code. A extensão monta o projeto a partir dos arquivos que você escolhe, gera o
Requisitos
Primeiros passos
Comandos
Os objetos intermediários ( Configuração (
|
| Chave | Descrição |
|---|---|
main |
Arquivo principal, relativo à raiz do projeto. |
destino.exe |
Caminho completo do executável gerado. Também define o nome e a pasta da .lib. |
destino.hrb |
Pasta para onde os .hrb são movidos. Os logs de compilação ficam em _history, dentro dela. |
compiler.path |
Pastas para o PATH durante a compilação (BCC, FiveWin, xHarbour). |
compiler.include |
Pastas de include. |
compiler.lib |
Pastas de bibliotecas. |
compiler.xharbour |
Pasta raiz do xHarbour, terminada em /. Usada só na compilação de HRB. Não vem no arquivo padrão; acrescente-a se for gerar HRB. |
compiler.defines |
Defines extras passados ao harbour.exe em cada tipo de compilação (veja abaixo). |
compiler.bat |
Linhas do arquivo de resposta do ilink32, na ordem do link. |
O exemplo acima foi resumido. O config.json criado pela extensão já traz a lista completa de bibliotecas do xHarbour e do Windows.
Marcadores em compiler.bat
Nas linhas do link, estes valores são trocados automaticamente:
| Marcador | Substituído por |
|---|---|
project_files_prg_frm |
Os .obj de todos os fontes do projeto. |
project_file_exe |
O executável (destino.exe) e o .map correspondente. |
project_files_lib |
As .lib adicionadas na visão File Explorer. |
Os arquivos .res adicionados ao projeto entram no final do link automaticamente.
Defines do harbour.exe (compiler.defines)
Cada tipo de compilação tem parâmetros fixos, que a extensão sempre passa, e uma lista de defines que você configura. Cada nome da lista vira um /d<NOME> no fim da linha do harbour.exe.
| Chave | Compilação | Parâmetros fixos | Defines padrão | Linha resultante (padrão) |
|---|---|---|---|---|
exe |
Executável | /q /M /N |
["EXATA_EXE"] |
/M /N /dEXATA_EXE |
lib |
Lib | /q /M /N -DxHB |
["EXATA_EXE"] |
/M /N -DxHB /dEXATA_EXE |
hrb |
HRB | /n /gh |
[] |
/n /gh |
Exemplos:
- Para não passar nenhum define extra no executável, use
"exe": []. - Para acrescentar outro define, use
"exe": ["EXATA_EXE", "MEU_DEFINE"]. O resultado é/M /N /dEXATA_EXE /dMEU_DEFINE.
Se compiler.defines não existir no config.json, a extensão usa os valores padrão e grava a chave no arquivo na próxima compilação. Se uma das listas estiver ausente ou não for uma lista, vale o padrão dela.
Recompilação automática
A extensão guarda no arquivos.json (flags_update) os parâmetros da última compilação. A próxima compilação recompila todos os fontes, mesmo pelo Compilar, quando:
- os defines mudaram;
- você alternou entre compilar executável e lib.
Assim, nenhum .obj gerado com parâmetros diferentes entra no link.
EXATA_EXE
O define EXATA_EXE indica ao exatadyn.ch que o fonte faz parte de um executável. Os HRB não o recebem. Com o exatadyn.ch novo, um executável compilado sem ele gera Unresolved external no link.
Problemas conhecidos
- A extensão foi feita para Windows e para o fluxo BCC + xHarbour + FiveWin. Outros compiladores não são suportados.
- Se o terminal integrado já estiver ocupado, o
compile.baté enviado ao primeiro terminal aberto.
Notas de versão
Veja o CHANGELOG.
0.0.11
- Os defines do
harbour.exeficam configuráveis emcompiler.defines. - Quando os defines mudam, ou quando você alterna entre exe e lib, a próxima compilação recompila todos os fontes.
- A extensão ganhou ícone.
0.0.10
A compilação de executável e de lib passa /dEXATA_EXE ao harbour.exe. Com o exatadyn.ch novo, versões anteriores da extensão geram Unresolved external no link do executável.