Linha de comando
O fc e suas opções, o que ele grava e como ele diz o que está errado.
fc <arquivo.fxp> [opções]O fc lê um projeto (.fxp), traz os módulos de que ele precisa e grava o executável (ou a DLL). A linha de comando carrega pouco de propósito: a plataforma e o modo. Todo o resto (otimização, mapa, depuração, caminhos, símbolos) mora no arquivo de configuração.
Opções#
| Opção | Efeito |
|---|---|
-o <arquivo> | nome do executável de saída |
-O0 … -O3 | nível de otimização (padrão -O3) |
-g | informação de depuração: grava <saída>.pdb |
-map | grava o mapa de símbolos do ligador: <saída>.map |
-D<símbolo> | define um símbolo de compilação condicional |
-P<plataforma> | alvo: -PMSWin64 (padrão), -PMSWin32, -PLinux64 |
-M<modo> | modo de compilação: -MDebug, -MRelease… (o fc.config declara quais valem e o padrão) |
--NoPackages | não liga package nenhum: a RTL vai inteira dentro do binário. Sem esta opção vale o RtlPackage da configuração (a runtime compartilhada) |
-rtldll <mapa> | a RTL vem de uma DLL; <mapa> é o .fxnames do package que a contém |
-log[:arquivo] | log do progresso com hora em cada linha (padrão fc.log); serve para achar travamento e lentidão |
--wclstyles | lista os estilos visuais da WCL embutidos neste compilador |
fc Meu.fxp -PMSWin64 -MRelease
fc Meu.fxp -O0 -g -o Meu.exeO que ele grava#
Ao lado do executável (ou na pasta de saída da configuração), o fc grava:
| Arquivo | Quando |
|---|---|
<nome>.exe ou <nome>.dll | sempre |
<nome>.fxdeps | a lista de tudo o que a compilação leu (o projeto, o .config, cada módulo, cada include, a RTL e o próprio fc.exe); o RAD a usa para saber se o executável está desatualizado |
<nome>.pdb | com -g |
<nome>.map | com -map |
<nome>.rtti.json | com a chave Rtti ligada |
.fxd e .fxnames | num projeto package |
Variáveis de ambiente#
| Variável | Efeito |
|---|---|
FC_RTL | onde está a RTL (o mesmo que a chave RtlSource da configuração) |
FC_TIME=1 | mede e imprime o tempo de cada etapa |
MYCOMPILER_SYSROOT | num alvo Linux, onde estão crt1.o e a libc |
As mensagens#
O compilador escreve cada mensagem no formato
arquivo(linha,coluna): Severidade: textocom três severidades: Erro, Aviso e Dica. A saída termina com Executável gerado: <nome> se tudo deu certo, e com o código de saída diferente de zero se houve erro. Um {$message} do fonte (veja Diretivas) aparece no mesmo formato, com a severidade que ele pediu.
Como as mensagens seguem o formato arquivo(linha,coluna), editores e ferramentas as lêem sem adaptação. A extensão do VS Code traz um leitor para cada severidade.
Dentro de um editor#
Para compilar de dentro do VS Code, copie tasks-exemplo.json da extensão para .vscode\tasks.json. Ctrl+Shift+B compila o arquivo aberto, e os erros caem no painel de Problemas. No RAD, Ctrl+F9 compila e F9 executa.