Lazarus Packages/pt

From Free Pascal wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) português (pt) русский (ru) slovenčina (sk)

Visão Geral do Sistema de Pacotes do Lazarus

O que é um pacote Lazarus?

Um pacote Lazarus é uma coleção de unidades e componentes contendo informação sobre como eles podem ser compilados e como eles podem ser usados por projetos ou outros pacotes ou a IDE. Ao contrário do Delphi, os pacotes não são limitados a bibliotecas e podem ser independentes de sistema operacional. (No Delphi um pacote é uma biblioteca especialmente compilada usada por aplicações, pela IDE ou por ambos. Os pacotes do Delphi requerem a magia do compilador Delphi, o que o FPC não é capaz de fazer no momento e, é claro, esta magia é dependente de sistema operacional.)

Atualmente o compilador Free Pascal só dá suporte a pacotes estáticos. Portanto você deve reiniciar a IDE a cada vez que um pacote é instalado ou desinstalado.

Um pacote Lazarus é identificado ou distinguido pelo nome e pela versão.

FAQ

P: É preciso instalar um pacote:?
R: Você só precisa instalar um pacote se ele contiver itens de tempo de desenho, como os componentes da paleta de componentes da IDE. Se você não usa estes itens, não precisa instalar o pacote. Se você só quer usar o pacote em seus projetos, não o instale. P: Eu instalei um pacote mas a IDE não encontra as unidades
R: Instalar um pacote significa que o pacote é integrado à IDE, não ao seu projeto. São duas coisas diferentes. Para usar um pacote no seu projeto, vá a Projeto > Inspetor de Projetos > Adicionar > Novo Requerimento. E desinstale o pacote se ele não contém itens usados pela IDE.

Início Rápido

Para ver o sistema de pacotes em ação e se acostumar com ele, faça o seguinte:

Criando um novo pacote:

  • Arquivo -> Novo... -> Pacote -> Pacote Padrão
  • Abre-se o editor de pacotes
  • Use o botão Salvar no alto à esquerda.
  • Dependendo da sua configuração de nome em Opções de Ambiente a IDE vai perguntar por salvar em minúsculas. Responda Sim.

Parabéns: Você criou o seu primeiro pacote.

Adicionando um novo componente:

  • Use o botão Adicionar -> Novo componente
  • Escolha um componente na combobox de classes ancestrais. Por exemplo: TBevel.
  • Clique em Ok
  • O arquivo vai ser adicionado ao pacote e aberto no editor
  • Instale o pacote clicando em 'instalar' no alto do editor de pacotes.
  • O Lazarus vai salvar o pacote e perguntar se a IDE deve ser reconstruida. Responda Sim.
  • Os pacotes são vinculados estaticamente, portanto é preciso reiniciar a IDE.
  • Reinicie o Lazarus e veja seu novo componente na paleta de componentes (por exemplo: um TBevel1 vai estar na aba 'Additional').
  • Se você não vê o seu componente na paleta de componentes, é possível que você não esteja executando a versão recompilada do Lazarus. Você pode configurar onde construir o Lazarus em Ambiente > Opções de Ambiente > Arquivos > Diretório do Lazarus. Em vez de chamar o Lazarus diretamente você pode usar o StartLazarus, que inicia o Lazarus recém-criado, por exemplo o executável do Lazarus no diretório ~/.lazarus, se você não tem direito de acesso para gravação ao diretório em que o Lazarus está instalado.

Parabéns: Você instalou o seu primeiro pacote com seu primeiro componente.

Os itens de menu da IDE para pacotes:

  • Arquivo -> Novo... -> Pacote -> Pacote Padrão

Cria um novo pacote.

  • Projeto -> Inspetor de Projetos
 Aqui você pode ver que pacotes são requeridos pelo projeto atualmente aberto.
 Você pode adicionar novas dependências ou remover as desnecessárias.
  • Executar -> Opções do Compilador -> Herdado
 Aqui você pode ver que opções de compilador são herdadas de que pacote.

Componentes ->

 - 'Abrir pacote'
   Uma caixa de diálogo mostra todos os pacotes abertos e o seu estado.
 - 'Abrir arquivo de pacote'
   Abre um arquivo .lpk
 - 'Abrir pacote da unidade atual'
   Abre o arquivo .lpk a que pertence o arquivo aberto no editor de código
   
 - 'Abrir pacote recente'
   Abre um pacote recentemente aberto (arquivoi .lpk )
 - 'Adcionar unidade atual a pacote'
   Adicioona a unidade aberta no editor de código a um pacote 
   
 - 'Gráfico de Pacotes'
   O gráfico de pacotes mostra todos os pacotes abertos e suas dependências
 - 'Configurar pacotes instalados'
   Edita a lista de pacotes instalados na IDE. Instala ou desinstala vários pacotes de uma vez

Projeto -> Inspetor de Projetos

 Aqui você vê e edita todos os pacotes usados pelo projeto

A teoria

Cada pacote Lazarus tem um arquivo .lpk. Um pacote é identificado pelo seu nome e sua versão. O nome precisa corresponder ao nome do arquivo .lpk. Por exemplo:

Nome: Package1, Versão: 1.0, Nome do arquivo: /home/.../package1.lpk.

  • A IDE cria automaticamente o arquivo-fonte principal (package1.pas) Veja abaixo. O arquivo .lpk contém informação sobre os pacotes requeridos, os arquivos que ele usa, como compilá-los e o que é necessáro para usar o pacote por outros pacotes ou projetos. O diretório em que o arquivo .lpk está é chamado "diretório de pacotes".
  • A IDE mantém uma lista de todos os arquivos de pacote (<config directory>/packagelinks.xml) Toda vez que um pacote é aberto na IDE ele vai ser adicionado à lista. Quando um pacote é aberto, a IDE automaticamene abre todos os pacotes requeridos através desta lista.
  • Existem três pacotes básicos: FCL, LCL e SynEdit. Eles são parte da IDE e assim eles são auto-criados, somente leitura e não tem arquivo .lpk.
  • Normalmente um pacote tem um diretório de fontes com algumas unidades Pascal. E normalmente o arquivo .lpk estará lá também. Um pacote tem também um diretório de saída. O padrão é o subdiretório 'lib/$(TargetCPU)-$(TargetOS)/' no diretório de pacotes.
  • Antes de um pacote ser compilado a IDE verifica todos os pacotes requeridos e se eles precisam de atualização e tem a flag de auto-atualização eles são compilados primeiro. Então a IDE cria o pacote dos fontes principais. Se o arquivo .lpk era package1.lpk, o arquivo de fontes principal será package1.pas. O arquivo contém todas as unidades da cláusula uses mais o procedimento Register, que é chamado na seção de inicialização.

Por exemplo:

This file was automatically created by Lazarus. Do not edit!
This source is only used to compile and install
the package GTKOpenGL 1.0.
unit GTKOpenGL; interface uses GTKGLArea, GTKGLArea_Int, NVGL, NVGLX, LazarusPackageIntf; implementation procedure Register; begin RegisterUnit('GTKGLArea', @GTKGLArea.Register); end; initialization RegisterPackage('GTKOpenGL', @Register) end.
  • Então o compilador é chamado e o pacote é compilado para o diretório de saída.
  • Depois de uma compilação bem-sucedida o arquivo de estado é criado. O arquivo de estado é posto no diretório de saída. Ele tem o nome <packagename>.compiled e contém a informação de como o pacote foi compilado. Este arquivo de estado é usado pela IDE para verificar se atualizações são necessárias.

Por exemplo: gtkopengl.compiled:

<?xml version="1.0"?>
<CONFIG>
  <Compiler Value="/usr/bin/ppc386" Date="781388725"/>
  <Params Value=" -Rintel -S2cgi -CD -Ch8000000 -OG1p1
    -Tlinux -gl -vewnhi -l -Fu../../../lcl/units
    -Fu../../../lcl/units/gtk -Fu../../../packager/units
    -Fu. -FElib/ gtkopengl.pas"/>
</CONFIG>
  • A IDE abre todos os pacotes necessários automaticamente. Isto quer dizer que ela abre todos os pacotes instalados, todos os pacotes marcados para instalação (auto-instalados), todos os pacotes abertos no Editor, todos os pacotes requeridos pelo projeto e todos os pacotes requeridos por um dos outros pacotes. Pacotes desnecessários são automaticamente descarregados quando a IDE se torna ociosa.
  • A IDE nunca abre dois pacotes com o mesmo nome ao mesmo tempo. Quando o usuário abre outro arquivo de pacote com o mesmo nome de um pacote já aberto, a IDE vai perguntar por substituir o antigo.
  • A IDE mantém dois grupos extra de pacotes: os pacotes 'instalados' e os 'auto-instalados'. Os pacotes auto-instlados vão ser vinculados à IDE na próxima compilação. Ela cria dois novos arquivos no diretório de config: staticpackages.inc e idemake.cfg. Então ela chama 'make ide OPT=@/path/to/your/config/idemake.cfg' para se auto-compilar.

Dicas

  • Para renomear um pacote, use Salvar Como.

Exemplo:

Eu vou usar tiOPF framework como exemplo. The tiOPF tem o seguinte
layout de diretório, devido ao fato de que ele compila para FPC, 
Delphi 5-7, D2005 e 2006.
Fontes                <= caminho completo \Programming\3rdParty\tiOPF\Source
 \Compiladores
    \Delphi7          <= Pacote do Delphi 7 ficam aqui 
    \D2005
    \FPC              <= o tiOPF.lpk fica aqui 
 \Core                <= arquivos de unidade core
 \Options             <= arquivo opcional de unidade para funcionalidades extra
 \GUI

Usando este exemplo, eu incluí na caixa de edição "Opções - Uso - Unidades" o seguintes caminhos:
"$(PkgOutDir);..\..\Core;..\..\Options;..\..\GUI" que vão ser adicionados
a qualquer projeto que use este pacote.

Contribuidores e Comentários

Esta página foi convertida da versão epikwiki.