<chapter id="applicationwizard">

<chapterinfo>
  <authorgroup>
    <author
><firstname
>Bernd</firstname
><surname
>Pol</surname
></author>
    <!-- ROLES_OF_TRANSLATORS -->
  </authorgroup>
</chapterinfo>

<title
>Introdução &mdash; o &appwizard;</title>

<indexterm zone="applicationwizard">
  <primary
>&appwizard;</primary
></indexterm>

<para
>No &kdevelop;, o trabalho de desenvolvimento de 'software' está organizado em <emphasis
>projectos</emphasis
>. Cada um desses projectos reune tudo o que pertença a uma tarefa de programação completa: ficheiros de código, ficheiros de dados adicionais e todas as necessidades de gestão, como o sistema de compilação, assim como o acesso a todos os componentes e a todas as ferramentas adicionais que sejam necessárias para pôr a aplicação a funcionar. </para>
<para
>A organização de todo o trabalho de desenvolvimento nos projectos permite-lhe mudar facilmente de tarefas para tarefas, a nível global. Isto é bastante útil se você, &eg;, trabalha em várias aplicações ao mesmo tempo, como poderá ser normalmente o caso. Diga ao &kdevelop; para abrir o projecto com que deseja trabalhar e poderá continuar no ambiente tal e qual o deixou. </para>

<sect1 id="new-projects">
<title
>Projectos Novos</title>

<indexterm zone="new-projects">
  <primary
>projecto</primary>
  <secondary
>novos</secondary
></indexterm>

<para
>Sempre que deseje iniciar um novo projecto de programação, terão de ser efectuados vários procedimentos formais de configuração. Terá de ser criada uma estrutura de directorias inicial, os ficheiros de inclusão e de código terão de ser fornecidos, o sistema de compilações tem de ser inicializado, &etc;. </para>
<para
>O &kdevelop; fornece uma forma simples de iniciar um novo projecto de programação &mdash; o <emphasis
>&appwizard;</emphasis
>. Você irá encontrar o &appwizard; no item de menu <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Novo Projecto</guimenuitem
></menuchoice
>. </para>
<para
>Só é necessária uma série curta de passos para iniciar um novo projecto de programação, usando o &appwizard;: </para>
<orderedlist>
  <listitem
><para
><link linkend="new-projects-start-type"
>Seleccionar a linguagem de programação</link
> que você deseja usar e o tipo da aplicação que deseja compilar, a partir de um conjunto de modelos predefinidos. </para
></listitem>
  <listitem
><para
><link linkend="new-projects-start-general"
>Fornecer algumas informações gerais</link
> como o nome da aplicação, a directoria em que a aplicação deverá ser criada, &etc; </para
></listitem>
  <listitem
><para
>Decidir se deseja usar um <link linkend="new-projects-start-cvs"
>sistema de controlo de versões</link
>, como &eg; o CVS, e fornecer os dados necessários. </para
></listitem>
  <listitem
><para
>Definir alguns modelos para os <link linkend="new-projects-start-templates"
>ficheiros de inclusão e de código iniciais</link
> (se for necessário). </para
></listitem>
  <listitem
><para
>Finalmente, dizer ao &appwizard; para <link linkend="new-projects-start-build"
>configurar todos os artefactos iniciais</link
>, a estrutura de directorias, os modelos de ficheiros de ficheiros de código/inclusão iniciais e as ferramentas de gestão, &eg; um esqueleto inicial de compilação, &etc; </para
></listitem>
</orderedlist>
<para
>'Voil&agrave;' &mdash; é tudo. O &appwizard; irá fornecer-lhe então um conjunto inicial e funcional de ficheiros de programação, nos quais você poderá começar prontamente a trabalhar. </para>
<para
>Vamos então olhar agora para tudo isto com mais detalhe ... </para>

<sect2 id="new-projects-start">
<title
>Passos Iniciais</title>

<indexterm zone="new-projects-start">
  <primary
>janela</primary>
  <secondary
>criar novo projecto</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>projecto</primary>
  <secondary
>criar novo projecto</secondary>
  <tertiary
>janela</tertiary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>projecto</primary>
  <secondary
>modelos</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>modelos</primary>
  <secondary
>projecto</secondary
></indexterm>

<para
>Para criar um novo projecto no &kdevelop;, seleccione <guimenuitem
>Novo Projecto</guimenuitem
> do menu <guimenu
>Projecto</guimenu
>. A janela para <guilabel
>Criar um Novo Projecto</guilabel
> irá aparecer e mostrar-lhe-á uma página <guilabel
>Geral</guilabel
> inicial: </para>

<screenshot id="screenshot-newprojectwizard">
  <mediaobject>
    <imageobject>
      <imagedata fileref="createnewproject.png" format="PNG"/>
    </imageobject>
    <caption
><para
>Janela inicial de configuração de um novo projecto </para
></caption>
  </mediaobject>
</screenshot>

<para
>Como pode ver, esta janela está dividida numa parte superior e numa inferior. Na parte superior, você poderá decidir sobre a linguagem de programação e o tipo de aplicação, enquanto que a parte inferior contém algumas informações gerais. </para>

<sect3 id="new-projects-start-type">
<title
>Seleccionar a Linguagem de Programação e o Tipo de Aplicação</title>

<indexterm zone="new-projects-start-type">
  <primary
>projecto</primary>
  <secondary
>tipo de aplicação</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>projecto</primary>
  <secondary
>linguagem de programação</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>projecto</primary>
  <secondary
>linguagem</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>linguagem</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>linguagem de programação</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>aplicação</primary>
  <secondary
>tipo</secondary
></indexterm>

<para
>O lado esquerdo da parte superior desta janela é onde você faz o trabalho de selecção. Quando aparecer, você irá encontrar então uma lista de pastas, em que cada uma contém uma linguagem de programação, como por exemplo: </para>

<itemizedlist>
  <listitem
><para
>Ada <indexterm>
      <primary
>Ada</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C <indexterm>
      <primary
>C</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C++ <indexterm>
      <primary
>C++</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Bases de Dados (Projectos SQL) <indexterm>
      <primary
>SQL</primary>
      <secondary
>novo projecto</secondary
></indexterm>
    <indexterm>
      <primary
>Base de Dados</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Fortran <indexterm>
      <primary
>Fortran</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Haskell <indexterm>
      <primary
>Haskell</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Java <indexterm>
      <primary
>Java</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Pascal <indexterm>
      <primary
>Pascal</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Perl <indexterm>
      <primary
>Perl</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>PHP <indexterm>
      <primary
>PHP</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Python <indexterm>
      <primary
>Python</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Ruby <indexterm>
      <primary
>Ruby</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Linha de Comandos ('Scripts' para a Linha de Comandos Bash) <indexterm>
      <primary
>Bash</primary>
      <secondary
>novo projecto</secondary
></indexterm>
    <indexterm>
      <primary
>linha de comandos</primary>
      <secondary
>novo projecto</secondary
></indexterm>
  </para
></listitem>
</itemizedlist>

<para
>Para ser mais exacto, estas pastas não contêm ferramentas de programação de facto. Elas sim conduzem a <emphasis
>modelos</emphasis
> predefinidos que você poderá usar como ponto de partida para programar nessa linguagem. Para ter uma ideia do que é fornecido, basta abrir as pastas uma a seguir à outra. Irá aparecer um conjunto de sub-pastas em algumas e apenas um ou mais itens simples noutras. As sub-pastas que você verá organizam os modelos disponíveis de acordo com algumas tarefas, enquanto que os itens simples indicam os modelos que você poderá seleccionar. </para>
<para
>Não poderemos entrar em detalhes aqui sobre que tarefas fazem o quê, mas é fácil descobrir. Sempre que você seleccionar um modelo, é mostrada alguma informação nos campos à direita. No campo inferior, você irá encontrar uma <emphasis
>breve descrição</emphasis
> sobre o que é que o modelo é suposto fazer. No campo acima dele é mostrada uma imagem, se estiver disponível, sobre o resultado da aplicação que este modelo produz se você a compilar e correr sem modificações. Normalmente, esta é uma <emphasis
>fotografia</emphasis
> da janela principal que a aplicação irá mostrar. </para>
<para
>Seleccione o modelo que melhor se adequa aos objectivos da sua aplicação como ponto de partida. Depois introduza as informações das propriedades gerais no campo inferior, tal como é mostrado no capítulo seguinte. </para>

<formalpara>
<title
>Seleccionar um Sistema de Gestão de Projectos</title>
<para
>Cada modelo está associado a um <link linkend="makesystems"
>Sistema de Gestão de Projectos</link
> específico. De momento, não existe uma forma livre de seleccionar um desses Sistemas de Gestão de Projectos. Você terá de procurar um modelo que se adeque às suas necessidades ou de alterar o seu projecto, depois de criado, de acordo com isso. </para>
</formalpara>

</sect3
> <!-- new-projects-start-type -->

<sect3 id="new-projects-start-general">
<title
>Fornecer Informação Geral</title>

<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>propriedades</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>propriedades</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>aplicação</primary>
  <secondary
>nome</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>nome</primary>
  <secondary
>aplicação</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>directoria</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>directoria</primary>
  <secondary
>projecto</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>localização</primary>
  <secondary
>novo projecto</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>autor</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>e-mail</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>autor</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>e-mail</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>main.cpp</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>main.cpp</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projecto</primary>
  <secondary
>licença</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>licença</primary
></indexterm>

<para
>A parte inferior da janela <guilabel
>Criar um Novo Projecto</guilabel
>, na página <guilabel
>Geral</guilabel
>, é uma área chamada <guilabel
>Propriedades</guilabel
>. Você tem de indicar aqui algumas informações gerais sobre o seu projecto, de modo a que o &appwizard; saiba como criar a estrutura inicial. </para>
<formalpara>
<title
>Nome da Aplicação</title>
<para
>A sua aplicação precisa de um nome, como é óbvio. Indique-o no campo <guilabel
>Propriedades</guilabel
>, chamado <guilabel
>Nome da Aplicação</guilabel
>. Iremos usar <quote
>MinhaAplicacao</quote
> por exemplo. </para>
</formalpara>
<para
>Quando o fizer, você irá reparar que o &appwizard; se recusará a aceitar caracteres especiais de qualquer espécie. Os únicos caracteres aceites são: <itemizedlist>
  <listitem
><para
>caracteres maiúsculos e minúsculos</para
></listitem>
  <listitem
><para
>números</para
></listitem>
  <listitem
><para
>o carácter de sublinhado (_)</para
></listitem>
</itemizedlist>
</para>
<para
>Uma razão importante para esta restrição é que o &appwizard; irá usar este nome da aplicação como <emphasis
>base dos nomes de algumas classes</emphasis
> que irá construir quando configurar o projecto inicialmente. Daí, o nome da aplicação terá de se adequar às regras da linguagem de programação que usar. </para>
<formalpara>
<title
>A Directoria do Projecto</title>
<para
>A outra causa para esta restrição poderá ser vista por si na linha inferior da área <guilabel
>Propriedades</guilabel
>. Chama-se <guilabel
>Localização final</guilabel
> e mostra a directoria onde o &appwizard; irá criar a aplicação. </para>
</formalpara>
<para
>À medida que você vai escrevendo o nome da aplicação, você irá reparar que o &appwizard; repete os seus dados introduzidos no fim da linha <guilabel
>Localização final</guilabel
>, usando apenas os caracteres minúsculos. </para>
<para
>Como tal, você terá de seleccionar o nome da sua nova aplicação com cuidado. Se você terminar com o nome de uma directoria já utilizada, o &appwizard; não lhe permitirá passar para o próximo passo, mantendo o botão <guibutton
>Próximo &gt;</guibutton
> desactivado (a cinzento). De qualquer forma, ele <emphasis
>avisá-lo-á</emphasis
> nesse caso, adicionando o texto <quote
>(dir/ficheiro já existe)</quote
> no campo <guilabel
>Localização final</guilabel
>. </para>

<formalpara>
<title
>A Localização Inicial</title>
<para
>Existem duas formas de seleccionar outra pasta para a sua nova aplicação. Uma passa por seleccionar outro nome. Contudo, isso nem sempre é conveniente (você poderá, &eg;, configurar outra versão de uma aplicação já existente). Como alternativa, você poderá seleccionar outra localização para a directoria da aplicação. </para>
</formalpara>
<para
>Isto é feito com o segundo campo das <guilabel
>Propriedades</guilabel
>, chamado <guilabel
>Localização</guilabel
>. O que você indicar aqui é a <emphasis
>localização inicial</emphasis
> da directoria de desenvolvimento da nova aplicação. O &appwizard; irá adicionar o nome da aplicação a esta directoria quando inicializar o novo projecto. O resultado é apresentado no campo <guilabel
>Localização final</guilabel
>, que lhe dá um melhor controlo sobre o que se passa. </para>
<para
>O &appwizard; irá copiar um <emphasis
>valor inicial</emphasis
> para o campo <guilabel
>Localização</guilabel
> no início. Este é extraído a partir do que você tiver escolhido no campo <guilabel
>Directoria de projectos por omissão</guilabel
> dos <link linkend="setup-general"
>passos gerais de configuração</link
>. No nosso caso, o &kdevelop; está configurado para usar a <filename class="directory"
>/home/ze/projectos</filename
>. </para>
<para
>Altere o conteúdo do campo <guilabel
>Localização</guilabel
> para que a directoria de desenvolvimento das aplicações mostrada na linha <guilabel
>Localização final</guilabel
> seja única. </para>

<note
><para
>Tenha em atenção se a linha do campo <guilabel
>Localização</guilabel
> já existe ou não. O &appwizard; irá <emphasis
>avisá-lo</emphasis
> se indicar localizações inexistentes adicionando <quote
>(inválido)</quote
> ao campo <guilabel
>Localizaço final</guilabel
>. </para
></note>

<formalpara>
<title
>Informações Pessoais</title>
<para
>Os campos a seguir não são tão críticos. Basta indicar o seu nome (i.e., o nome da pessoal responsável pela aplicação) no campo <guilabel
>Autor</guilabel
> e um endereço de e-mail válido no campo <guilabel
>E-mail</guilabel
>, de modo que os utilizadores lhe possam comunicar algo sobre a aplicação. </para>
</formalpara>

<note>
<orderedlist>
  <listitem
><para
>O &appwizard; preenche este campos com alguns valores predefinidos, extraídos a partir da configuração do E-mail no <application
>centro de controlo do KDE</application
>. Se estes valores nos campos da janela <guilabel
>Criar um Novo Projecto</guilabel
>, para o <guilabel
>Autor</guilabel
> e para o <guilabel
>E-mail</guilabel
> não forem válidos, você poderá ter de ver a sua configuração de e-mail no centro de controlo do KDE. </para
></listitem>
  <listitem
><para
>O &appwizard; integrará esta informação nos modelos iniciais de programas, se tal se aplicar. Nos programas em C++ para o KDE, por exemplo, você poderá encontrolá-la perto do início do ficheiro de código <filename
>main.cpp</filename
>. </para
></listitem>
  <listitem
><para
>De todos os campos, o <guilabel
>E-mail</guilabel
> é <emphasis
>opcional</emphasis
>, o que reflecte o facto de que nem todos os programadores terão acesso à Internet. Você poderá manter este campo em branco se o desejar e continuar o seu trabalho. </para
></listitem>
</orderedlist>
</note>

<formalpara>
<title
>Informação da Versão e da Licença</title>
<para
>Finalmente indique um número de versão inicial para a sua aplicação nova no campo <guilabel
>Versão</guilabel
> e seleccione a licença segundo a qual deseja publicar a sua aplicação na página <guilabel
>Licença</guilabel
>. </para>
</formalpara>

<para
>Se você seleccionar um tipo de aplicação para o qual o &appwizard; forneça textos de modelos de código comuns (&eg;, C/C++), você poderá ver o texto de notificação da licença na terceira página desta janela <guilabel
>Criar um Novo Projecto</guilabel
> (veja o capítulo sobre como <link linkend="new-projects-start-templates"
>Fornecer modelos de código/inclusão</link
> em baixo). </para>
<para
>Se você indicou <quote
>Personalizada</quote
> na página <guilabel
>Licença</guilabel
>, você terá de indicar um texto próprio para a licença. </para>

<note
><para
>Tanto a informação da licença como da versão serão integradas nos modelos iniciais num formato adequado que o tipo de aplicação que você seleccionou ofereça. </para
></note>

<para
>Logo que tenha introduzido toda esta informação, carregue no botão <guibutton
>Próximo &gt;</guibutton
> para avançar, tal como é mostrado nos capítulos seguintes. </para>
</sect3
> <!-- new-projects-start-general -->

</sect2
> <!-- new-projects-start -->

<sect2 id="new-projects-start-cvs">
<title
>Fornecer a Informação do Sistema de Controlo de Versões</title>

<indexterm zone="new-projects-start-cvs">
  <primary
>CVS</primary>
  <secondary
>novo projecto</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>projecto</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>base de dados</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>versão</primary>
  <secondary
>base de dados</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>versão</primary>
  <secondary
>CVS</secondary
></indexterm>

<para
>Num segundo passo, o &appwizard; levá-lo-á para a página do <guilabel
>Sistema de Controlo de Versões</guilabel
>, onde poderá decidir qual o sistema de controlo de versões que desejará usar. </para>

<note
><para
>Esta discussão concentra-se nas necessidades apenas para a criação do projecto. Para mais informações sobre o CVS veja o capítulo sobre como <link linkend="cvs"
>Usar o CVS</link
> em baixo. </para
></note>

<formalpara>
<title
>Nenhum Sistema de Controlo de Versões Necessário</title>
<para
>Inicialmente, está a opção <quote
>Nenhum</quote
> seleccionada na página do <guilabel
>Sistema de controlo de versões</guilabel
>, onde a página ficará em branco. Se não quiser usar nenhum sistema de controlo de versões, basta carregar no botão <guibutton
>Próximo 
></guibutton
> e seguir em frente. </para>
</formalpara>

<formalpara>
<title
>Usar o CVS</title>
<para
>Caso contrário, você terá de seleccionar de novo o sistema de controlo de versões que deseja usar na página <guilabel
>Sistema de controlo de versões</guilabel
>. De momento, só o <quote
>&cvs;</quote
> é que está disponível. Se o seleccionar, então o &appwizard; irá mostrar de novo a página, mostrando ela agora um conjunto de campos que precisa de preencher. </para>
</formalpara>

<screenshot id="screenshot-newproject-cvs">
  <mediaobject>
    <imageobject>
      <imagedata fileref="create-new-project-cvs.png" format="PNG"/>
    </imageobject>
    <caption
><para
>Configurar o novo projecto no CVS </para
></caption>
  </mediaobject>
</screenshot>

<para
>Um sistema de controlo de versões como o &CVS; (que significa <quote
>Concurrent Versions System</quote
> ou <quote
>Sistema Concorrente de Versões</quote
>) guarda as cópias dos ficheiros seleccionados do projecto numa espécie de base de dados. Se você usar o &CVS; você poderá, entre outras coisas, enviar (fazer <quote
>commit</quote
>) destes ficheiros ou carregá-los para a sua directoria do projecto (fazer um <quote
>checkout</quote
> ou um <quote
>update</quote
>). O que há de especial nisto é que os ficheiros na base de dados das versões são gravados de uma forma estruturada que permite em qualquer altura voltar atrás a um estado anterior de desenvolvimento, se for necessário. Para além disso, o &CVS; permite a vários programadores colaborarem facilmente num grande projecto (como o &kdevelop;) sem estragar o trabalho dos outros. </para>

<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>raiz</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>raiz</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>local</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>remoto</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS local</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>:local:</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>:local:</secondary
></indexterm>

<formalpara id="new-projects-start-cvs-root">
<title
>Raiz do CVS</title>
<para
>O &cvs; precisa de <emphasis
>gerir</emphasis
> a base de dados de versões que mantém para os seus ficheiros do projecto. Para o conseguir, ele mantém alguma informação especial da base de dados numa directoria própria, chamada de <emphasis
>raiz do &cvs;</emphasis
>. O primeiro passo para configurar o &cvs; para o seu projecto novo é então indicar ao &kdevelop; onde é que se localiza essa raiz. </para>
</formalpara>

<para
><emphasis
>Raiz local do &cvs;.</emphasis
> Existem duas possibilidades básicas. Ou você usa uma base de dados <emphasis
>local</emphasis
> do CVS ou poderá usar uma base de dados que é mantida num <emphasis
>servidor remoto</emphasis
>. Se fizer desenvolvimentos próprios, você poderá usar a base de dados do &cvs; como uma espécie de base de dados de salvaguarda no seu próprio computador. Normalmente esta é configurada na raiz da sua área pessoal e é-lhe dado o nome <filename
>cvsroot</filename
>. Isto poderá assemelhar-se ao seguinte: </para>
<para
><userinput
><filename class="directory"
>/home/ze/cvsroot</filename
></userinput
> (em que <filename
>ze</filename
> poderá ser substituído pelo nome do seu utilizador). </para>

<note
><para
>De facto, este é um formato curto. De forma exacta, a raiz local do &cvs; deverá ser endereçada com o prefixo <computeroutput
>:local:</computeroutput
>. O formato curto só é permitido nos casos em que o nome do ficheiro começa por uma barra (<computeroutput
>/</computeroutput
>). O nome completo do nosso exemplo seria então igual a <filename class="directory"
>:local:/home/ze/cvsroot</filename
> </para
></note>

<para
>Indique o nome da directoria-raiz do &cvs; que foi configurada para o seu sistema no campo <guilabel
>Raiz do CVS</guilabel
>. Em princípio, você poderá seleccionar qualquer nome, ou até mesmo usar várias bases de dados do &cvs;, mas aconselha-se que você se associe à raiz do &cvs; logo que esteja configurada. </para>
<para
><emphasis
>Inicializar uma nova raiz do &cvs;.</emphasis
> Se não existir ainda nenhuma raiz do &cvs;, o &kdevelop; poderá dizer ao sistema do &CVS; para criar uma para si na directoria indicada. Basta assinalar a opção <guilabel
>Iniciar raiz</guilabel
> por baixo do campo <guilabel
>Raiz do CVS</guilabel
>. </para>
<note
><para
>Como foi dito, o &kdevelop; só <emphasis
>manda</emphasis
> o sistema do &CVS; inicializar uma nova raiz do &cvs;. Não faz nada, por si só, a esta directoria. Felizmente, o &cvs; é esperto o suficiente para verificar se a directoria de raiz do &cvs; já existe ou não. Como tal, não fará mal nenhum se você tiver assinalado inadvertidamente a opção <guilabel
>Iniciar raiz</guilabel
> numa directoria de raiz do &cvs; já existente. </para
></note>

<para
><emphasis
>Raiz do &cvs; remota.</emphasis
> Existem ocasiões em que a base de dados do &cvs; deverá ser mantida num servidor remoto, especialmente quando vários programadores trabalharem no mesmo projecto. Aí, você terá de indicar o URL da raiz do &cvs; deste servidor no campo <guilabel
>Raiz do CVS</guilabel
>. Por exemplo, se você quiser aceder ao servidor de &cvs; do &kde;: </para>
<para
><userinput
><filename class="directory"
>:pserver:utilizador@cvs.kde.org:/home/kde</filename
></userinput
> (onde o <filename
>utilizador</filename
> corresponde ao nome do utilizador definido para a sua conta de &cvs; do &kde;) </para>

<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS remoto</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>:pserver:</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>:ext:</primary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS</primary>
  <secondary
>:local:</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS</primary>
  <secondary
>:pserver:</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-remote">
  <primary
>CVS</primary>
  <secondary
>:ext:</secondary
></indexterm>

<formalpara id="new-projects-start-cvs-remote">
<title
>Tipos de Servidores de &cvs; Remotos</title>
<para
>Basicamente existem dois tipos de servidores de &cvs; remotos largamente usados, o <emphasis
>pserver</emphasis
> que usa um protocolo não-cifrado e protegido por senha, ou o <emphasis
>ext</emphasis
> que uma transferência de dados cifrada por RSH ou SSH. Eles são distinguidos de acordo com o prefixo do URL que usam: </para>
</formalpara>
<para>
<filename
>:pserver:</filename>
</para>
<para
>para o tipo de servidor não-cifrado e <quote
>protegido por senha</quote
>, ou </para>
<para>
<filename
>:ext:</filename>
</para>
<para
>para um tipo de servidor cifrado por RSH ou SSH. Por exemplo, o </para>
<para>
<userinput
><filename class="directory"
>:ext:utilizador@cvs.sourceforge.net:/cvsroot/cervisia</filename
></userinput>
</para>
<para
>acede à raiz do &cvs; da conhecida aplicação <application
>Cervisia</application
>, que é usada para gerir o &cvs; e que está no servidor do SourceForge. </para>
<para
>Se você quiser usar um servidor cifrado por RSH ou por SSH para o acesso ao &cvs;, você terá de dizer ao &kdevelop;, qual o protocolo de cifra a usar. Basta indicar <userinput
>rsh</userinput
> ou <userinput
>ssh</userinput
> no campo <guilabel
>CVS_RSH</guilabel
> da página <guilabel
>Criar um Novo Projecto</guilabel
> <guilabel
>Sistema de Controlo de Versões</guilabel
>. </para>

<note
><para
>Existe uma contrapartida se você usar um servidor cifrado para o &cvs; no &kdevelop;. Veja o capítulo <link linkend="cvs"
>Usar o CVS</link
> para mais detalhes. </para
></note>

<indexterm zone="new-projects-start-cvs-repository">
  <primary
>CVS</primary>
  <secondary
>repositório</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-repository">
  <primary
>repositório</primary>
  <secondary
>CVS</secondary
></indexterm>

<formalpara id="new-projects-start-cvs-repository">
<title
>O Repositório de &cvs;</title>
<para
>Até agora você só indicou ao &kdevelop; onde é que a raiz do &cvs; root se encontra para gerir a base de dados das versões e como aceder-lhe. Agora, você irá precisar de dizer ao &kdevelop; sob que nome você irá querer que o &CVS; grave os seus ficheiros do projecto nessa base de dados. O local onde os seus ficheiros do projecto serão guardados no &cvs; é chamado de <emphasis
>repositório</emphasis
>. </para>
</formalpara>
<para
>Em princípio, você poderá usar qualquer nome para o repositório de &cvs; dos ficheiros do seu projecto, desde que corresponda às especificações de nomes de ficheiros. Mesmo assim, a maioria dos programadores usam apenas o nome da aplicação em si. O &CVS; irá criar uma directoria com esse nome na raiz do &cvs;, para que seja encontrada com maior facilidade se você mantiver o nome da aplicação nela. </para>
<para
>Basta indica o nome do repositório que deseja usar no campo <guilabel
>Repositório do CVS</guilabel
> da página <guilabel
>Criar um Novo Projecto</guilabel
> <guilabel
>Sistema de Controlo de Versões</guilabel
>. No nosso exemplo, esta é: <userinput
>NovaAplicacao</userinput
> </para>

<warning
><para
><emphasis
>Tenha cuidado em não usar um repositório que já exista!</emphasis
> O sistema &CVS; não o avisa sobre os ficheiros duplicados mas irá limpar tudo o que não conduza a um conflito formal. Em resumo, você poderá deixar tudo confuso! </para
></warning>

<formalpara>
<title
>Os Campos Restantes</title>
<para
>Não existe já muito mais para fazer. O &appwizard; já configurou os campos restante por si. Em detalhe: </para>
</formalpara>
<para
>O campo do <guilabel
>Vendedor</guilabel
> é usado apenas por razões de compatibilidae. Você poderá usar o valor por omissão <quote
>distribuidor</quote
> que o &appwizard; usa. </para>
<para
>O campo da <guilabel
>Mensagem</guilabel
> permite-lhe comentar o conteúdo inicial do &cvs;. Use o texto que desejar ou poderá manter o texto <quote
>novo projecto</quote
> que o &appwizard; colocou. </para>
<para
>O campo <guilabel
>Marca de lançamento</guilabel
> contém o nome que é marcado para o estado inicial do seu projecto. Essa <emphasis
>marca</emphasis
> define um certo ponto no repositório do &CVS; a que você poderá aceder posteriormente para este estado do seu desenvolvimento. (Veja mais no capítulo <link linkend="cvs"
>Usar o CVS</link
>.) </para>
<para
>O &appwizard; colocou uma marca <quote
>inicio</quote
>, a qual é uma proposta aceitável. Basta usá-la. </para>

<note>
<para
>Quando qualquer uma destas informações está errada, o &kdevelop; normalmente não irá saber de nada até à altura da criação do projecto. É o sistema do &CVS; que irá descobrir esses erros ao tentar criar o repositório. Aqui você deverá dar uma vista de olhos na janela <guilabel
>Mensagens</guilabel
> do &kdevelop; logo que o projecto for criado no passo final da configuração. Se ocorreu algum erro com o &CVS;, você irá ver na maioria dos casos uma mensagem semelhante a esta: </para>

<screen
><computeroutput
><literal>
* cd '/home/ze/teste' &amp;&amp; cvs -d '/home/ze/raiz_cvs' \
  import -m 'novo projecto' '' 'distribuidor' 'inicio' &amp;&amp;\
  sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \
  '/home/ze/raiz_cvs'
* cvs [import aborted]: /home/ze/raiz_cvs/CVSROOT: No such file or
  directory
* *** Exited with status: 1 ***
</literal
></computeroutput
></screen>

<para
>Se isto acontecer, você terá de configurar manualmente o &cvs; (o &kdevelop; deverá ter conseguido inicializar com sucesso os ficheiros do seu projecto nesta altura) ou então remover a directoria do projecto e começar tudo de novo com a opção <guimenuitem
>Novo Projecto</guimenuitem
> do menu <guimenu
>Projecto</guimenu
>. </para>
</note>

<para
>Depois de você ter introduzido toda a configuração relacionada com o &CVS;, carregue no botão <guibutton
>Próximo &gt;</guibutton
> para prosseguir. </para>

<note
><para
>Se você quiser corrigir um erro na página anterior do <guilabel
>Criar um Novo Projecto</guilabel
>, basta carregar no botão <guibutton
>&lt; Anterior</guibutton
>. O &appwizard; irá recordar os seus resultados na página actual, por isso você poderá prosseguir com facilidade quando regressar. </para
></note>

</sect2
> <!-- new-projects-start-cvs -->

<sect2 id="new-projects-start-templates">
<title
>Fornecer os Modelos de Ficheiros de Código/Inclusão</title>

<para
>O próximo passo leva-o a uma série de páginas onde poderá configurar informações comuns que deseje incluir nos seus ficheiros de código e de inclusão, se a tarefa à mão o permitir. </para>
<para
>Tanto os modelos para ficheiros de código e de inclusão são fornecidos para as aplicações de C e C++, cada um na sua própria página. Para as outras linguagens, só deverão existir modelos de ficheiros de código. E ainda, noutros casos, você poderá encontrar esta página de modelos em branco. </para>
<para
>Se a página for usada, o &appwizard; irá preencher um dado comentário comum sobre o que uma aplicação em C++ poderá parecer (o texto está em inglês, dado ser uma transcrição da licença GPL): </para>

<screen
><computeroutput
><literal>
/***************************************************************************
 *   Copyright (C) 2003 by O Seu Nome                                      *
 *   voce@proprio.com                                                      *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
</literal
></computeroutput
></screen>

<para
>Outros modelos irão fornecer várias informações semelhantes num formato que esteja de acordo com as definições da linguagem de programação que deseja usar. </para>
<para
>Como você poderá já ter notado, o gestor de aplicações já preencheu alguma informação que você indicou na primeira página <guilabel
>Geral</guilabel
> da janela <guilabel
>Criar um Novo Projecto</guilabel
>, nomeadamente o conteúdo dos campos <guilabel
>Autor</guilabel
> e <guilabel
>E-mail</guilabel
>. Também a informação adequada da licença foi introduzida de acordo com a sua selecção na página <guilabel
>Licença</guilabel
>. </para>

<sect3 id="new-projects-start-templates-edit">
<title
>Como Editar os Modelos</title>

<indexterm zone="new-projects-start-templates-edit">
  <primary
>modelos</primary>
  <secondary
>projecto</secondary>
  <tertiary
>editar</tertiary
></indexterm>
<indexterm zone="new-projects-start-templates-edit">
  <primary
>projecto</primary>
  <secondary
>modelos</secondary>
  <tertiary
>editar</tertiary
></indexterm>

<para
>Os modelos que você configurar na janela <guilabel
>Criar um Novo Projecto</guilabel
> serão depois processados, sempre que você disser ao &kdevelop; para configurar um novo ficheiro de código e/ou de inclusão. A informação que indicar aqui será incluída no topo, como um cabeçalho de docummentação, antes de a parte do código começar. </para>
<para
>Você não está restrito ao texto normal, de qualquer forma. O &kdevelop; reconhece diversas variáveis que lhe permitirão incluir a informação actualizada no ficheiro. O &appwizard; usou de facto algumas variáveis para inserir o <guilabel
>Autor</guilabel
>, o <guilabel
>E-mail</guilabel
> e a <guilabel
>Licença</guilabel
> no campo de texto do modelo inicial. </para>

<formalpara>
<title
>Incluir a Informação do Ficheiro para o &doxygen;</title>
<para
>Se, por exemplo, você quiser que a documentação da API gerada pelo &doxygen; mostre alguma informação sobre o conteúdo do ficheiro na sua lista de ficheiros, você poderá incluir as seguintes linhas no modelo do ficheiro de código: </para>
</formalpara
><screen
><computeroutput
><literal>
/**
 * \file $MODULE$.cpp
 * \brief (ponha uma descrição breve aqui).
 **/
</literal
></computeroutput
></screen>
<para
>Sempre que você criar um novo ficheiro de código, o &kdevelop; irá substituir a variável <computeroutput
>$MODULE$</computeroutput
> pelo nome do ficheiro criado como novo. Por exemplo, se você criou uma nova classe de C++ chamada <classname
>TesteSimples</classname
>, você irá ver as seguintes linhas no ficheiro <filename
>testesimples.cpp</filename
>: </para>
<screen
><computeroutput
><literal>
/**
 * \file testesimples.cpp
 * \brief (ponha uma descrição breve aqui).
 **/
</literal
></computeroutput
></screen>
<para
>Você terá à mesma de fornecer a breve descrição a seguir à palavra-chave <quote
>\brief</quote
>, mas parte do trabalho é automaticamente feita para si. </para>
<formalpara>
<title
>O Ficheiro de Texto da Licença</title>
<para
>Como outro exemplo, você poderia incluir uma referência explícita para o texto da licença que deseja usar no modelo. Use a variável <computeroutput
>$LICENSEFILE$</computeroutput
> para esse fim e adicione, por exemplo, esta linha: </para>
</formalpara>
<screen
><computeroutput
><literal>
//   Veja o $LICENSEFILE$ para o texto completo da licença.
</literal
></computeroutput
></screen>
<para
>O &appwizard; irá substituir o <computeroutput
>$LICENSEFILE$</computeroutput
> pela localização do ficheiro com o texto completo da licença, nomeadamente: </para>
<screen
><computeroutput
><literal>
//   Veja o COPYING para o texto completo da licença.
</literal
></computeroutput
></screen>
<para
>para a licença GPL ou </para>
<screen
><computeroutput
><literal>
//   Veja o LICENSE.BSD para o texto completo da licença.
</literal
></computeroutput
></screen>
<para
>se optou por colocar a sua aplicação segundo os termos da licença BSD. </para>
<para
>Existem obviamente mais variáveis que o &kdevelop; conhece. Veja a secção sobre como <link linkend="newfiles-edittemplates"
>Editar os modelos</link
> no capítulo <link linkend="editing"
>Ferramentas de edição</link
> para saber o que é possível. </para>

<note
><para
>Os modelos que definir aqui ficarão em efeito só após o &appwizard; ter criado o projecto novo. Você irá encontrar esta informação no topo dos ficheiros que você criou durante o processo de desenvolvimento. Ao criar os ficheiros iniciais, o &appwizard; irá usar alguns modelos-padrão predefinidos. Você terá de adaptar manualmente estes ficheiros iniciais de acordo com as suas necessidades. </para
></note>

</sect3
> <!-- new-projects-start-templates-edit -->
</sect2
> <!-- new-projects-start-templates -->

<sect2 id="new-projects-start-build">
<title
>Criar os Ficheiros Iniciais do Projecto</title>

<indexterm zone="new-projects-start-build">
  <primary
>projecto</primary>
  <secondary
>novos</secondary>
  <tertiary
>criar</tertiary
></indexterm>
<indexterm zone="new-projects-start-build">
  <primary
>projecto</primary>
  <secondary
>criação inicial</secondary
></indexterm>

<para
>Está quase tudo feito, por agora. Na última página de modelos, o botão <guibutton
>Próximo &gt;</guibutton
> terá mudado para aparecer então <guibutton
>Terminar</guibutton
>. </para>
<para
><emphasis
>Pense duas vezes antes de carregar nele!</emphasis
> Você terá à mesma a opção de rever tudo se carregar repetidamente no botão <guibutton
>&lt; Anterior</guibutton
>. Dado que o &appwizard; recorda todas as informações que você introduziu até agora, é aconselhável que você ocupe algum tempo a rever tudo de novo. No caso de você usar o CVS local, não se esqueça de verificar com atenção o nome do <emphasis
>repositório de CVS</emphasis
> (não deverá existir nenhuma sub-directoria com esse nome na directoria da raiz do CVS &mdash; se existir, tente outro nome de repositório). </para>
<para
>Se em alguma altura não desejar que o novo projecto, seja criado, interrompa a janela do <guilabel
>Criar um Novo Projecto</guilabel
> com o botão <guibutton
>Cancelar</guibutton
>. Caso contrário, carregue em <guibutton
>Terminar</guibutton
> e veja na janela <guilabel
>Mensagens</guilabel
> como é que o &appwizard; inicia o projecto. </para>
<para
>Se você quiser usar um sistema de controlo de versões (&CVS;), irão existir dois passos, de facto. O &appwizard; irá primeiro criar as directorias e ficheiros do projecto e então depois invocará o programa &CVS; que irá reiniciar a janela de <guilabel
>Mensagens</guilabel
> com o seu próprio conteúdo. Se ocorrer algum erro durante uma dessas execuções, o processo irá terminar, mostrando-lhe uma mensagem de erro correspondente na janela. </para>

<note
><para
>Em muitos casos em que o seu projecto foi configurado desta forma, o &kdevelop; irá automaticamente carregar os ficheiros de código de um ou mais módulos importantes para que você possa começar logo a trabalhar. (Os módulos de código que serão mostrados&mdash;se existir algum que seja&mdash;contudo, depende do modelo seleccionado inicialmente no &appwizard;.) </para
></note>

<para
>Não se esqueça de verificar inicialmente o que é que o &appwizard; forneceu. Por exemplo, você poderá querer alterar as informações iniciais dos cabeçalhos, de acordo com os seus próprios modelos. Normalmente, você irá encontrar estes numa sub-directoria <filename class="directory"
>templates</filename
> da directoria do seu projecto. À partida, somente algumas cópias simples serão suficientes. </para>
<para
>Aí, é aconselhável que você <emphasis
>compile o projecto inicial</emphasis
> antes de tentar alterar qualquer código que seja. Na maioria dos casos, esta compilação inicial será possível à partida. Como tal, você poderá começar logo a preparar o projecto para ser alterado de acordo com a sua vontade. Se não foi possível, basta remover a directoria do projecto (e da sua raiz local do &CVS; se usar alguma) e recomeçar do princípio. </para>

<warning id="defaultbuild-warning"
> <!-- ### remove this when "default" works again -->

  <indexterm zone="defaultbuild-warning">
    <primary
>configuração predefinida da criação</primary>
    <secondary
>aviso</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>configurações da criação</primary>
    <secondary
>aviso da criação predefinida</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>aviso</primary>
    <secondary
>configuração predefinida da criação</secondary
></indexterm>

  <para
>Antes de você compilar o seu novo projecto da primeira vez, dê uma vista de olhos no <menuchoice
><guimenu
>Projecto</guimenu
> <guimenuitem
>Configuração da Construção</guimenuitem
></menuchoice
>. Devem existir três selecções mostradas: <guimenuitem
>default</guimenuitem
>, <guimenuitem
>optimized</guimenuitem
> e <guimenuitem
>debug</guimenuitem
>, com a <guimenuitem
>debug</guimenuitem
> seleccionada; use se possível esta, ou então use a <guimenuitem
>optimized</guimenuitem
> em alternativa. </para>
  <para
>Devido a algumas limitações na configuração actual do autoconf/automake, você <emphasis
>não deverá de forma alguma</emphasis
> compilar com a configuração <guimenuitem
>default</guimenuitem
>. Esta irá corromper algumas configurações de directorias internas, fazendo com que o <command
>configure</command
> se queixe quando o tentar usar nas configurações <guimenuitem
>optimized</guimenuitem
> ou <guimenuitem
>debug</guimenuitem
>, a seguir. </para>
  <para
>(Isto aplica-se apenas às capacidades com várias opções. Se o tipo de aplicação que você seleccionou só contém uma configuração <guimenuitem
>default</guimenuitem
>, você deverá obviamente usar esta.) </para>
</warning>

</sect2
> <!-- new-projects-start-build -->

</sect1
> <!-- new-projects -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="applicationwizard-behind">
<title
>Nos Bastidores</title>

<indexterm zone="applicationwizard-behind">
  <primary
>projecto</primary>
  <secondary
>novos</secondary>
  <tertiary
>criar</tertiary
></indexterm>
<indexterm zone="applicationwizard-behind">
  <primary
>CVS</primary>
  <secondary
>novo projecto</secondary>
  <tertiary
>criar</tertiary
></indexterm>

<para
>É sempre aconselhável ver o resultado nas mensagens e tentar perceber o que se passou. Pelo menos no início, você deverá perceber o que devia acontecer quando o &appwizard; iniciou o seu projecto novo. Não é possível entrar em detalhes, mas será feito um levantamento destas mensagens para ter uma ideia do que se estava a passar nos bastidores. </para>

<tip>
<para
>Se o seu projecto estava configurado para usar o &CVS; local, você terá duas séries de mensagens, das quais a primeira provavelmente já passou antes de a conseguir ler, dado que o &CVS; usou a janela <guilabel
>Mensagens</guilabel
> para os seus próprios fins. Por isso, obtiveram-se ambas as séries em sequências separadas &mdash; configurar a aplicação duas vezes, uma sem o &CVS;, depois removeu-se a directoria e começou-se do início, desta vez configurando a aplicação com o &CVS;. </para>
<para
>Você poderá querer seguir este mesmo procedimento se algo de estranho se passou e você não conseguiu ver as mensagens da primeira série de configuração. </para>
</tip>
<para
>Iremos olhar para os resultados das <guilabel
>Mensagens</guilabel
> em ambos os passos: <itemizedlist>
  <listitem
><para
>O <link linkend="applicationwizard-behind-app"
>Configurar a aplicação</link
> assim como o </para
></listitem>
  <listitem
><para
><link linkend="applicationwizard-behind-cvs"
>Configurar o &CVS;</link
>. </para
></listitem>
</itemizedlist>
</para>

<sect2 id="applicationwizard-behind-app">
<title
>Configurar a Aplicação</title>

<indexterm zone="applicationwizard-behind-app">
  <primary
>Perl</primary>
  <secondary
>novo projecto</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app">
  <primary
>Perl</primary>
  <secondary
>kdevelop.pm</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app">
  <primary
>kdevelop.pm</primary
></indexterm>
<indexterm zone="applicationwizard-behind-app">
  <primary
>projecto</primary>
  <secondary
>kdevelop.pm</secondary
></indexterm>

<para
>Se configurar a <quote
>NovaAplicacao</quote
> como no exemplo anterior, o &appwizard; deverá ter impresso as seguintes mensagens (foi reorganizado um pouco o resultado para ter mais legibilidade) e você poderá carregar numa linha para saltar directamente para a sua descrição: </para>
<screen
><computeroutput>
* <link linkend="applicationwizard-behind-app-perl"
>perl</link
> /opt/kde3/share/apps/kdevappwizard/template-kapp/script \
  --author='O Seu Nome' \
  --email='voce@proprio.com' \
  --version='0.1' \
  --appname='NovaAplicacao' \
  --dest='/home/ze/novaaplicacao' \
  --source='/opt/kde3/share/apps/kdevappwizard' \
  --license='GPL' \
  --licensefile='COPYING' \
  --filetemplates='h,/tmp/kde-devel/kdevelopcDE5Ja.tmp,\
                   cpp,/tmp/kde-devel/kdevelopsRrLab.tmp'
* <link linkend="applicationwizard-behind-app-base"
>Making destination directory</link>
* <link linkend="applicationwizard-behind-app-templates"
>Installing file templates</link>
* <link linkend="applicationwizard-behind-app-license"
>Installing license file</link>
* <link linkend="applicationwizard-behind-app-admin"
>Installing admin directory</link>
* <link linkend="applicationwizard-behind-app-gnu"
>Installing GNU coding standard files</link>
* <link linkend="applicationwizard-behind-app-doc"
>Installing Docbook template</link>
* <link linkend="applicationwizard-behind-app-project"
>Installing project file</link>
* <link linkend="applicationwizard-behind-app-framework"
>Installing application framework</link>
* <link linkend="applicationwizard-behind-app-sources"
>Installing application sources</link>
* Finished
* *** Sucesso ***
</computeroutput
></screen>
<formalpara id="applicationwizard-behind-app-perl">
<title
>Um 'Script' de &perl; Invocado</title>
<para
>Como você poderá ver na primeira linha, o &appwizard; criou uma chamada a um programa em &perl; a partir da configuração que você fez na janela de <guilabel
>Criar um Novo Projecto</guilabel
>. O programa encontra-se numa directoria que é determinada a partir do modelo do tipo de aplicação que você seleccionou na parte superior da janela <guilabel
>Criar um Novo Projecto</guilabel
>, nomeadamente na página <guilabel
>Geral</guilabel
>. </para>
</formalpara>
<para
>No nosso caso, este programa localiza-se na directoria <filename class="directory"
>/opt/kde3/share/apps/kdevappwizard/template-kapp/</filename
>. Basta substituir o <filename class="directory"
>/opt/kde3/</filename
> pela directoria do &kde; no seu sistema. </para>
<para
>Este programa em &perl; é chamado com uma série de parâmetros, todos eles marcados com prefixos <quote
><computeroutput
>--</computeroutput
></quote
>, nos quais o  &appwizard; passa a informação das outras selecções que você fez na janela <guilabel
>Criar um Novo Projecto</guilabel
>. </para>
<para
>A série exacta de passos de inicialização depende de qual o programa em &perl; que foi invocado. Se quiser verificar, basta olhar para o ficheiro que o comando <computeroutput
>perl</computeroutput
> invocou, na janela <guilabel
>Mensagens</guilabel
>. </para>
<note
><para
>Os programas de configuração tiram partido de um conjunto de sub-rotinas em &perl; reunidas no ficheiro <filename
>kdevelop.pm</filename
>, o qual poderá encontrar na directoria <filename class="directory"
>share/apps/kdevwizard/template-common/</filename
> da sua instalação do &kde;. </para
></note>

<formalpara id="applicationwizard-behind-app-base">
<title
>A Directoria de Base das Aplicações</title>
<para
>Quando o programa em &perl; é corrido, você obtém uma série de mensagens sobre o que está <emphasis
>prestes a ser feito</emphasis
> no próximo passo de instalação. No primeiro passo, será configurada uma <computeroutput
>directoria de destino</computeroutput
>. Esta é a directoria de base para a sua aplicação, tal e qual aparecia na linha <guilabel
>Localização final</guilabel
> da janela <guilabel
>Criar um Novo Projecto</guilabel
>, na página <guilabel
>Geral</guilabel
>. O programa usa o valor do parâmetro <computeroutput
>--dest</computeroutput
> na comando &perl; acima. </para>
</formalpara>

<indexterm zone="applicationwizard-behind-app-templates">
  <primary
>projecto</primary>
  <secondary
>modelos</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-templates">
  <primary
>modelos</primary>
  <secondary
>projecto</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-templates">
<title
>Os Modelos de Ficheiros</title>
<para
>No próximo passo, os modelos de ficheiros que você configurou na janela <guilabel
>Criar um Novo Projecto</guilabel
> serão copiados para a sub-directoria <filename class="directory"
>templates</filename
> desta directoria de destino. Como poderá no parâmetro <computeroutput
>--filetemplates</computeroutput
>, os modelos são submetidos aos pares &mdash; os sufixos para que são usados em primeiro lugar, seguido do nome de um ficheiro temporário, para o qual o &appwizard; copiou o conteúdo das páginas das janelas de modelos. Estes sufixos serão usados como os nomes dos ficheiros onde guardar os textos dos modelos. </para>
</formalpara>
<para
>No nosso exemplo, foram instalados dois ficheiros de modelos, nomeadamente em <filename
>templates/h</filename
> para os ficheiros de inclusão em C++ e em <filename
>templates/cpp</filename
> para os ficheiros de código em C++. </para>

<indexterm zone="applicationwizard-behind-app-license">
  <primary
>projecto</primary>
  <secondary
>licença</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-license">
  <primary
>licença</primary
></indexterm>

<formalpara id="applicationwizard-behind-app-license">
<title
>O Ficheiro de Licença</title>
<para
>Na página <guilabel
>Geral</guilabel
> da janela <guilabel
>Criar um Novo Projecto</guilabel
>, você seleccionou a licença segundo a qual deseja disponibilizar a sua aplicação. O &appwizard; iniciou duas acções para isto. Uma foi a indicação da licença que pôs nos modelos. A outra acção faz com que o ficheiro da licença correspondente seja copiado para a directoria de base da sua aplicação. </para>
</formalpara>
<para
>O parâmetro <computeroutput
>--licensefile</computeroutput
> diz ao programa de &perl; qual o ficheiro de texto da licença a copiar. No nosso exemplo, o ficheiro  <filename
>/home/ze/novaaplicacao/COPYING</filename
> terá sido instalado neste passo. </para>

<indexterm zone="applicationwizard-behind-app-admin">
  <primary
>projecto</primary>
  <secondary
>administração</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-admin">
  <primary
>administração</primary
></indexterm>

<formalpara id="applicationwizard-behind-app-admin">
<title
>A Directoria de Administração</title>
<para
>O &kdevelop; necessita de um conjunto de ficheiros para administrar o projecto. Estes são colocados na sub-directoria <filename class="directory"
>admin</filename
> da directoria de base da aplicação. </para>
</formalpara>
<para
>O &appwizard; cria a sub-directoria <filename class="directory"
>admin</filename
> neste passo e extrai o conjunto normal de ficheiros que necessita do pacote <filename
>share/apps/kdevappwizard/template-common/admin.tar.gz</filename
> da sua directoria do &kde;. </para>
<note
><para
>O &kdevelop; usa sempre o mesmo conjunto de ficheiros para fins de administração. Como tal, não é necessário nenhum parâmetro no programa de &perl; para configurar a sub-directoria <filename class="directory"
>admin</filename
>. </para
></note>

<indexterm zone="applicationwizard-behind-app-gnu">
  <primary
>GNU</primary>
  <secondary
>norma de codificação</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-gnu">
<title
>Os Ficheiros-Padrão de Código da &GNU;</title>
<para
>Existem vários ficheiros-padrão que são distribuídos com todas as aplicações que estejam em conformidade com a norma de codificação da &GNU;. O programa em &perl; extrai estes ficheiros do pacote <filename
>share/apps/kdevappwizard/template-common/gnu.tar.gz</filename
> da sua directoria de instalação do &kde; e personaliza-os de acordo com a informação que indicou na janela <guilabel
>Criar um Novo Projecto</guilabel
>. </para>
</formalpara>
<para
>Depois deste passo, você irá encontrar os seguintes ficheiros na directoria de base da sua aplicação: <itemizedlist>
  <listitem
><para
>O <filename
>AUTHORS</filename
>, que contém inicialmente a informação dos parâmetros <computeroutput
>--author</computeroutput
> e <computeroutput
>--email</computeroutput
>. </para
></listitem>
  <listitem
><para
>O <filename
>COPYING</filename
>, que corresponde a licença geral da &GNU;, o qual todas as aplicações em conformidade com a &GNU; deverão conter &mdash; mesmo que tenha decidido disponibilizar a sua aplicação sob outra licença. </para
></listitem>
  <listitem
><para
>O <filename
>ChangeLog</filename
>, que está inicialmente vazio &mdash; você deverá demarcar aqui todas as grandes alterações. </para
></listitem>
  <listitem
><para
>O <filename
>INSTALL</filename
> contém as instruções genéricas de instalação &mdash; modifique este se forem necessários procedimentos ou precauções especiais para instalar a sua aplicação. </para
></listitem>
  <listitem
><para
>O <filename
>README</filename
>, inicialmente em branco &mdash; coloque aqui qualquer informação que o utilizador deva saber, antes de instalar a sua aplicação. </para
></listitem>
  <listitem
><para
>O <filename
>TODO</filename
>, inicialmente em branco &mdash; coloque aqui a informação sobre o que terá de ser ainda feito para melhorar mais tarde a sua aplicação. Você poderá usar isto como um bloco de notas para os seus próprios fins, mas só se tornará realmente útil quando você colocar a sua aplicação no domínio público. </para
></listitem>
</itemizedlist>
</para>

<indexterm zone="applicationwizard-behind-app-doc">
  <primary
>projecto</primary>
  <secondary
>documentação</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-doc">
  <primary
>documentação</primary>
  <secondary
>projecto</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-doc">
<title
>A Documentação Inicial da Aplicação</title>
<para
>Todos os projectos que você configurar irão ter um modelo inicial em <emphasis
>DocBook</emphasis
>, a partir do qual você poderá começar a escrever a sua própria documentação da aplicação. O programa em &perl; irá neste casso ter configurado as sub-directorias <filename class="directory"
>doc</filename
> e a <filename class="directory"
>doc/en</filename
> da directoria de base da aplicação com um modelo inicial em <filename
>doc/en/index.docbook</filename
> e com alguns ficheiros <filename
>Makefile.am</filename
> do &automake;, a partir dos quais o &kdevelop; poderá posteriormente ajudar a criar os ficheiros de ajuda do sistema. </para>
</formalpara>

<indexterm zone="applicationwizard-behind-app-project">
  <primary
>projecto</primary>
  <secondary
>ficheiros de projecto</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-project">
  <primary
>&kdevelop;</primary>
  <secondary
>ficheiros de projecto</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-project">
<title
>O Ficheiro de Projecto</title>
<para
>Até agora, a maior parte das coisas globais foram configuradas, nomeadamente tudo o que mais ou menos poderá ser encontrado em qualquer projecto do &kdevelop;. Com este passo, começam os processos de configuração mais específicos da aplicação. Estes poderão variar com base no tipo de aplicação que você tenha seleccionado. Dê uma vista de olhos no programa em &perl; que o &appwizard; invocou para a sua aplicação nova, se quiser procurar mais detalhes. Continuaremos a seguir os passos de exemplo indicados acima. </para>
</formalpara>
<para
>No primeiro destes passos o <emphasis
>ficheiro de gestão do projecto do &kdevelop;</emphasis
> é copiado a partir da directoria de modelos, na qual está o programa em &perl;. No nosso caso, foi copiado o ficheiro <filename
>share/apps/kdevappwizard/template-kapp/app.kdevelop</filename
> para a directoria de base da aplicação e então aí é personalizado de acordo com as selecções feitas na janela <guilabel
>Criar um Novo Projecto</guilabel
>. </para>

<note
><para
>Você poderá querer dar uma vista de olhos no ficheiro de projecto resultante que, no nosso caso, foi gravado em <filename
>/home/ze/novaaplicacao/novaaplicacao.kdevelop</filename
>. Ele está gravado em XML e poderá ser visto facilmente com o  <application
>Kate</application
> ou com outro editor de texto qualquer. Mas tenha cuidado em não o alterar, dado que o &kdevelop; se baseia no seu conteúdo. </para
></note>

<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>projecto</primary>
  <secondary
>plataforma</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>projecto</primary>
  <secondary
>plataforma de aplicações</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>plataforma</primary
></indexterm>
<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>aplicação</primary>
  <secondary
>plataforma</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-framework">
<title
>A Plataforma de Aplicações</title>
<para
>Agora é a altura em que as estruturas de directorias e os outros ficheiros de manutenção são configurados para conter a nova aplicação e mantê-la funcional. Serão então assim configurada o que nós chamados de <emphasis
>plataforma de aplicações</emphasis
> neste passo. A sua estrutura depende basicamente do tipo de aplicação que você seleccionou na janela <guilabel
>Criar um Novo Projecto</guilabel
>, mas partes dela são suficientemente comuns para serem encontradas noutros projectos. </para>
</formalpara>
<para
>No nosso caso, a seguinte estrutura de directorias foi criada na directoria de base da aplicação em <filename class="directory"
>/home/ze/novaaplicacao/</filename
>: <itemizedlist>
  <listitem
><para
>A sub-directoria <filename
>src</filename
> pretende conter os ficheiros de código da sua aplicação. </para
></listitem>
  <listitem
><para
>A sub-directoria <filename
>debug</filename
> irá conter o resultado compilado da configuração de compilação <emphasis
><quote
>debug</quote
></emphasis
>. (Veja o capítulo sobre <link linkend="buildconfigurations"
>Configurações de criação</link
> para aprender mais sobre o assunto). Como o nome indica, você deverá usar esta directoria para fins de depuração ('debugging'). </para
></listitem>
  <listitem
><para
>A sub-directoria <filename
>optimized</filename
> irá conter o resultado compilado da configuração de compilação ou criação <emphasis
><quote
>optimized</quote
></emphasis
>. Você deverá testar uma versão optimizada da sua aplicação a partir daqui. </para
></listitem>
  <listitem
><para
>A sub-directoria <filename
>po</filename
> é usada para <emphasis
>fins de tradução</emphasis
>. Ela irá conter os ficheiros <quote
>Portable Object</quote
> (ou ficheiros <filename
>.po</filename
>) e os seus modelos (os ficheiros <filename
>.pot</filename
>) que serão processados por um programa de traduções como, p.ex., o <application
>KBabel</application
>. </para
></listitem>
</itemizedlist>
</para>
<para
>Todas estas directorias não ficarão vazias, mas serão sim preenchidas com um conjunto de <filename
>Makefile</filename
>s e de outros ficheiros que o &kdevelop; usa para processar o código da aplicação. Também serão colocados alguns ícones para a nova aplicação na sub-directoria <filename
>src</filename
>, se tal se aplicar. No nosso caso, você irá encontrar dois deles: o <filename
>src/hi16-app-novaaplicacao.png</filename
> e o <filename
>src/hi32-app-novaaplicacao.png</filename
>, os quais irão conter ícones normais das aplicações do &kde;. </para>

<formalpara id="applicationwizard-behind-app-sources">
<title
>Código Instalado da Aplicação</title>
<para
>Esta plataforma, finalmente, será usada para colocar os <emphasis
>ficheiros de código iniciais</emphasis
> do seu novo projecto na directoria <filename class="directory"
>src</filename
>. Os ficheiros dependem em grande medida do tipo de aplicação que você seleccionou na janela <guilabel
>Criar um Novo Projecto</guilabel
>. Você irá ver em breve estes ficheiros, dado que será com eles que você irá trabalhar. </para>
</formalpara>

</sect2
> <!-- applicationwizard-behind-app -->

<sect2 id="applicationwizard-behind-cvs">
<title
>Configurar o &CVS;</title>

<indexterm zone="applicationwizard-behind-cvs">
  <primary
>CVS</primary>
  <secondary
>novo projecto</secondary>
  <tertiary
>criar</tertiary
></indexterm>
<indexterm zone="applicationwizard-behind-cvs">
  <primary
>projecto</primary>
  <secondary
>CVS</secondary
></indexterm>

<para
>Agora vamos dar uma vista de olhos sobre o que a janela de <guilabel
>Mensagens</guilabel
> irá conter quando o &appwizard; continuar a compilar o nosso projecto de exemplo. Se não ocorreu nenhum erro durante o primeiro passo, o conteúdo da <guilabel
>Mensagens</guilabel
> será reposto para criar o repositório do &cvs; local. </para>
<para
>Tal como antes, as linhas do resultado foram reformatadas para melhorar a legibilidade. Deste modo, foram também removidas algumas linhas supérfluas (onde se encontram os pontos <quote
>. . .</quote
>). </para>

<screen
><computeroutput>
* cd '/home/ze/novaaplicacao' \
  &amp;&amp; cvs -d '/home/ze/raiz_cvs' \
         import -m 'novo projecto' \
                'NovaAplicacao' \
                'distribuidor' \
                'inicio' \
  &amp;&amp; sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . \
                                                 'NovaAplicacao' \
                                                 '/home/ze/raiz_cvs'
  . . .
* N NovaAplicacao/NEWS
* N NovaAplicacao/TODO
* N NovaAplicacao/README
  . . .
* N NovaAplicacao/admin/configure.in.bot.end
* N NovaAplicacao/templates/h
* N NovaAplicacao/templates/cpp
*
* No conflicts created by this import
*
* *** Sucesso ***
</computeroutput
></screen>

<para
>Como você poderá ver na primeira linha das mensagens, o &appwizard; criou outra linha de comandos que conduz o trabalho do &cvs; a ser feito. Em primeiro lugar, a linha de comandos muda para a directoria de base da aplicação acabada de criar, para usar por omissão nos seguintes passos. </para>

<formalpara>
<title
>Criar o Repositório de &cvs;</title>
<para
>Na segunda parte da linha de comandos, a aplicação &CVS; será invocada para <emphasis
>importar</emphasis
> o conteúdo do projecto inicial no repositório desejado. Mais uma vez, o trabalho em detalhe é comandado por um conjunto de argumentos da linha de comandos para a chamada da aplicação &CVS;. </para>
</formalpara>
<itemizedlist>
  <listitem
><para
><computeroutput
>-d '/home/ze/raiz_cvs'</computeroutput
> &mdash; a opção <computeroutput
>-d</computeroutput
> diz ao &CVS; qual a directoria de base que deverá ser usada. Neste caso, é a <emphasis
>raiz do &cvs; local</emphasis
> que está localizada em <filename class="directory"
>/home/ze/raiz_cvs</filename
>. </para
></listitem>
  <listitem
><para
><computeroutput
>import</computeroutput
> &mdash; diz à aplicação &CVS; qual a operação que deverá ser efectuada sobre esta raiz. Neste caso, pretende-se <emphasis
>importar</emphasis
> os ficheiros para a base de dados do &cvs;. Para conseguir isto, o comando <computeroutput
>import</computeroutput
> necessita de alguns argumentos próprios: <itemizedlist>
      <listitem
><para
><computeroutput
>-m 'novo projecto'</computeroutput
> &mdash; a opção <computeroutput
>-m</computeroutput
> fornece ao comando algum <emphasis
>texto de mensagem</emphasis
> para esta acção. Ele será será gravado na base de dados e poderá ser usado posteriormente para identificar os dados que foram colocados neste passo. No nosso caso, o <quote
><computeroutput
>novo projecto</computeroutput
></quote
> corresponde ao armazenamento dos primeiros ficheiros na base de dados. </para
></listitem>
      <listitem
><para
><computeroutput
>'NovaAplicacao'</computeroutput
> &mdash; o segundo argumento diz ao &CVS; qual o <emphasis
>repositório</emphasis
> a usar. Se não existir, será criado antes das acções de importação. Neste caso, o repositório <filename
>NovaAplicacao</filename
> será criado. </para
></listitem>
      <listitem
><para
><computeroutput
>'distribuidor'</computeroutput
> &mdash; este argumento que se segue é uma <emphasis
>marca</emphasis
> ou <emphasis
>tag</emphasis
>, um nome simbólico que marca um conjunto de ficheiros na directoria. Existem vários significados diferentes para uma marca (veja a secção <link linkend="cvs"
>Usar o CVS</link
> para mais informações), mas esta irá marcar o conjunto completo dos ficheiros que estarão armazenados neste repositório. Não tem nenhuma utilização em particular, por isso a palavra <quote
><computeroutput
>distribuidor</computeroutput
></quote
> é um nome tão bom como outro qualquer. </para
></listitem>
      <listitem
><para
><computeroutput
>'inicio'</computeroutput
> &mdash; é outra marca. Esta marca a <emphasis
>versão de lançamento</emphasis
> ou, em palavras simples, um conjunto de ficheiros gravados subsequentemente e que pertencem todos a um conjunto. Nós usámos aqui <quote
><computeroutput
>inicio</computeroutput
></quote
>, que descreve de forma simples a utilização desta série inicial. </para
></listitem>
    </itemizedlist>
  </para
></listitem>
</itemizedlist>

<formalpara>
<title
>Os Ficheiros Importados</title>
<para
>A aplicação &CVS; irá criar o repositório e começará a importar todos os ficheiros da directoria <filename class="directory"
>/home/ze/novaaplicacao</filename
>. Ele irá indicar de seguida todos os ficheiros que foram carregados &mdash; este é o conteúdo do conjunto de linhas <quote
><computeroutput
>N</computeroutput
></quote
> que se seguem na janela <guilabel
>Mensagens</guilabel
>. O <computeroutput
>N</computeroutput
> diz que este ficheiro foi importado como novo para o repositório. </para>
</formalpara>
<para
>Dependendo do tipo da aplicação nova, poderão existir bastantes destas linhas <quote
><computeroutput
>N</computeroutput
></quote
>. Foi cortado o resultado para mostrar só as primeiras e últimas três linhas como exemplo. </para>

<formalpara>
<title
>A Mensagem de Sucesso do &CVS;</title>
<para
>O &CVS; indica sempre que uma operação foi bem sucedida ou não. No nosso caso foi mostrada a mensagem <quote
><computeroutput
>No conflicts created by this import</computeroutput
></quote
> (Não foram criados nenhuns conflitos por esta importação), seguido da mensagem geral <quote
><computeroutput
>*** Sucesso ***</computeroutput
></quote
>, dado que mais nenhuma operação teve de ser executada. </para>
</formalpara>

<note
><para
><emphasis
>Poderiam</emphasis
> ocorrer algumas mensagens de erro sobre ficheiros em conflito se o repositório já existisse, dado que o &CVS; verifica o conteúdo do ficheiro, de acordo com alguns critérios formais e irá indicar todos os conflitos que ele conseguir encontrar. </para
></note>

<formalpara>
<title
>Criar os Itens Administrativos do &cvs;</title>
<para
>A operação de importação do &CVS; está concluída nesta altura. O repositório foi configurado e todos os ficheiros que se pretendem manter foram armazenados na base de dados. Ainda há mais trabalho a fazer, dado que a aplicação &CVS; necessita de algumas informações administrativas para cada directoria da aplicação. Ele usa esta informação posteriormente para comunicar com a raiz e com o repositório do &cvs;. </para>
</formalpara>
<para
>Se estivéssemos a trabalhar com o &CVS; sozinho teríamos de fornecer um meio para o &CVS; armazenar esta informação na nossa directoria de trabalho. Por exemplo, poderíamos <emphasis
>obter</emphasis
> ou <emphasis
>fazer um 'checkout'</emphasis
> de todos os ficheiros de novo, numa directoria de base vazia, onde neste caso o &CVS; teria de gravar automaticamente todas as operações administrativas em conjunto com os ficheiros obtidos. </para>
<para
>No &kdevelop;, felizmente, existe uma forma mais simples. Ele oferece o programa <filename
>buildcvs.sh</filename
> na directoria <filename class="directory"
>/opt/kde3/share/apps/kdevcvs/</filename
> (mais uma vez, substitua a <filename class="directory"
>/opt/kde3</filename
> pela sua directoria de instalação do &kde;), o qual foi invocado depois da aplicação &CVS; ter terminado com sucesso o seu trabalho. </para>
<para
>O programa <filename
>buildcvs.sh</filename
> irá, principalmente, colocar uma sub-directoria <filename class="directory"
>CVS</filename
> em cada directoria da plataforma da aplicação. Cada uma destas sub-directorias <filename class="directory"
>CVS</filename
> irá conter pelo menos três ficheiros, como é mostrado em baixo: </para>
<itemizedlist>
  <listitem
><para
>O <filename
>Root</filename
> contém o nome do servidor em que se encontra a raiz do &cvs;. No nosso caso, esta é a raiz local <filename
>/home/ze/raiz_cvs</filename
>. A razão para isto é para usar sempre o mesmo repositório para estes ficheiros, dado que o &CVS; não os guarda como um todo mas sim apenas as <emphasis
>diferenças</emphasis
> entre as partes subsequentes. Isto irá poupar bastante espaço em disco mas obriga a que toda a informação subsequente seja mantida reunida em todas as circunstâncias. </para
></listitem>
  <listitem
><para
>O <filename
>Repository</filename
> serve o mesmo propósito. O &CVS; mantém o nome do repositório a usar aqui, sendo neste caso <filename
>NovaAplicacao</filename
>. </para
></listitem>
  <listitem
><para
>O <filename
>Entries</filename
> contém os nomes e mais alguns dados sobre os ficheiros que o &CVS; irá gerir nesta directoria. Isto acontece porque o &CVS; não mantém de facto todos os ficheiros da aplicação no repositório. Você poderá indicar quais os ficheiros a guardar e quais ignorar &mdash; esta informação é mantida no ficheiro <filename
>Entries</filename
>. </para>
  </listitem>
</itemizedlist>

<para
>Todos estes esforços são necessários porque o trabalho do &CVS; é <emphasis
>orientado à directoria</emphasis
>. Dado que o &CVS; armazenou anteriormente todos os ficheiros na plataforma da <filename
>NovaAplicacao</filename
>, o programa <filename
>buildcvs.sh</filename
> simplesmente pesquisa todas as directorias novas e coloca os nomes de todos os ficheiros da aplicação que encontrar no ficheiro <filename
>CVS/Entries</filename
> respectivo. </para>
<para
>O programa corre silenciosamente e termina sem mostrar mais nenhuma linha na janela <guilabel
>Mensagens</guilabel
> quando o seu trabalho terminar. </para>

</sect2
> <!-- applicationwizard-behind-cvs -->

</sect1
> <!-- applicationwizard-behind -->

</chapter
> <!-- applicationwizard -->
