Compilando múltiplos fontes com o prismac e inserindo o path do interpretador

Iniciado por adalberto, Março 04, 2017, 11:56:07 AM

tópico anterior - próximo tópico

adalberto

Graças ao compilador prismac aceitar argumentos em linha de comando, tanto no Linux quanto no Windows,
você não fica preso a uma ide. Pode user qualquer uma e depois compilar pelo terminal ou pelo cmd.

Dica.: é possível fazer um utilitário gráfico para compilar os fontes usando a biblioteca ig

E descobri uma forma de embutir o caminho do interpretador no bytecode compilado pelo prismac.

1 - Compile normalmente:
  prismac -o programa  fonte1.prisma fonte2.prisma principal.prisma

Veja que deixei principal.prisma no final pois este fonte usa funções dos outros fontes.

2 - Embutindo o caminho do interpretador
  Faça um script prisma usando o seguinte código:

local path, ext; //criando variável local sem valor ainda
  se sis.nome == 'win32' entao
      path  = '#!"C:\\Prisma\\1.0\\bin\\prisma.exe"';
      ext = '.pbrexe';
  senao
      path = '#!/usr/local/bin/prisma';
      //no linux o executável não tem extensão.
  fim

funcao def_executavel(arq)
    local prog_bin;
    se tipo(arq) == 'string' entao
      local a = es.abra(arq, 'leiturabin');
      se a entao
        prog_bin = a:leia("*t")
        a:feche();
      senao
         erro'erro ao tentar abrir arquivo';
      fim
    fim
   
    se prog_bin entao
      local result = path .. '\n' .. prog_bin;//veja que é necessário nova linha
      se ext entao
        local p, tmp = sis.nome_arquivo(arq);//pega a pasta e o nome do arquivo sem extensão
        arq = p .. tmp .. '.' .. ext;
      senao
         arq = arq .. '.out';
      fim
     
      local a = es.abra(arq, 'escritabin');
      se a entao
        a:escreva(result);//finalmente gravamos o arquivo em modo binário.
        a:feche();
        se sis.nome =='linux' entao
          sis.execute('chmod +x ' .. arq);//definindo permissão como executável.
        fim
      senao
        erro'erro ao tentar abrir arquivo de saida';
      fim
    fim
fim

poe'Digite o nome ou caminho do arquivo';
local arq = leia();
def_executavel(arq);

poe('Processo terminado verifique a saida')


Usando a função acima basta colocar seu programa em bytecode no diretório bin e executá-lo normalmente.

No Windows é diferente, basta associar a extensão ao interpretador prisma, isso já foi feito se você usou o
instalador gui.

Isso muito útil para cgis tanto em Linux quanto em Windows, assim se você quiser ocultar o código basta usar
este comando que o navegador executará normalmente.

Usando o pric, isso é feito automaticamente.

Lembrando que no pric o programa principal tem de vir antes dos outros fontes.


Espero que seja útil essa dica. Até logo.