<chapter id="applicationwizard">

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

<title
>Komma igång: Programguiden</title>

<indexterm zone="applicationwizard">
  <primary
>Programguiden</primary
></indexterm>

<para
>Arbete med att utveckla programvara i &kdevelop; organiseras i <emphasis
>projekt</emphasis
>. Ett sådant projekt håller samman allt som hör till en fullständig programmeringsuppgift: källkodsfiler, ytterligare datafiler, alla hanteringsfunktioner som behövs som byggsystemet samt åtkomst till alla komponenter och ytterligare verktyg som behövs för att få programmet klart att köras. </para>
<para
>Att organisera utvecklingsarbetet i projekt låter dig enkelt byta mellan befintliga övergripande uppgifter. Det här riktigt bekvämt om du till exempel arbetar med flera program samtidigt, vilket ofta är fallet. Tala om för &kdevelop; att öppna projektet du vill arbeta med, och du kan fortsätta i miljön precis där du tidigare lämnade den. </para>

<sect1 id="new-projects">
<title
>Nya projekt</title>

<indexterm zone="new-projects">
  <primary
>projekt</primary>
  <secondary
>nytt</secondary
></indexterm>

<para
>Så fort du vill starta ett nytt programmeringsprojekt, behöver en hel del formella inställningsprocedurer göras. En startstruktur för kataloger måste skapas, nya deklarationsfiler och källkodsfiler måste skapas, byggsystemet måste initieras, etc. </para>
<para
>&kdevelop; tillhandahåller ett enkelt sätt att starta ett nytt programmeringsprojekt: <emphasis
>programguiden</emphasis
>. Du hittar programguiden via menyalternativet <menuchoice
><guimenu
>Projekt</guimenu
> <guimenuitem
>Nytt projekt</guimenuitem
></menuchoice
>. </para>
<para
>Det behövs bara ett fåtal steg för att skapa ett nytt programmeringsprojekt med programguiden: </para>
<orderedlist>
  <listitem
><para
><link linkend="new-projects-start-type"
>Välj programspråk</link
> du vill använda, och typ av program som du vill skapa från en uppsättning fördefinierade mallar. </para
></listitem>
  <listitem
><para
><link linkend="new-projects-start-general"
>Tillhandahåll en del allmän information</link
> som programnamn, katalog där programmet ska byggas, etc. </para
></listitem>
  <listitem
><para
>Bestäm om du vill använda ett <link linkend="new-projects-start-cvs"
>versionskontrollsystem</link
>, som t.ex. CVS, och tillhandahåll nödvändig information som behövs. </para
></listitem>
  <listitem
><para
>Ställ in några mallar för <link linkend="new-projects-start-templates"
>ursprunglig deklarationsfil och källkodsfil</link
> (om nödvändigt). </para
></listitem>
  <listitem
><para
>Tala till sist om för programguiden att <link linkend="new-projects-start-build"
>skapa alla nya saker</link
>, katalogstruktur, startmallar för deklarationsfiler och källkodsfiler, och hanteringsverktyg som ett startskelett för att bygga programmet, etc. </para
></listitem>
</orderedlist>
<para
>Voil&agrave;, det är allt. Programguiden har nu gett dig en första fungerade uppsättning programfiler, där du enkelt kan börja arbeta. </para>
<para
>Låt oss nu ta en mer detaljerad titt på allt detta... </para>

<sect2 id="new-projects-start">
<title
>Inledande steg</title>

<indexterm zone="new-projects-start">
  <primary
>dialogruta</primary>
  <secondary
>skapa nytt projekt</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>projekt</primary>
  <secondary
>skapa nytt projekt</secondary>
  <tertiary
>dialogruta</tertiary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>projekt</primary>
  <secondary
>mallar</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>mallar</primary>
  <secondary
>projekt</secondary
></indexterm>

<para
>För att skapa ett nytt projekt i &kdevelop;, välj <guimenuitem
>Nytt projekt</guimenuitem
> i menyn <guimenu
>Projekt</guimenu
>. Du ska då se guiden för att skapa nytt projekt, som visas nedan: </para>

<screenshot id="screenshot-newprojectwizard">
  <mediaobject>
    <imageobject>
      <imagedata fileref="createnewproject.png" format="PNG"/>
    </imageobject>
    <caption
><para
>Inledande dialogruta för att skapa ett nytt projekt </para
></caption>
  </mediaobject>
</screenshot>

<para
>Som du kan se, är dialogrutan uppdelad i en övre och undre del. I den övre delen kan du bestämma dig för programspråk och programtyp. Den under delen innehåller en del allmän information. </para>

<sect3 id="new-projects-start-type">
<title
>Välj programspråk och programtyp</title>

<indexterm zone="new-projects-start-type">
  <primary
>projekt</primary>
  <secondary
>programtyp</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>projekt</primary>
  <secondary
>programspråk</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>projekt</primary>
  <secondary
>språk</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>språk</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>programspråk</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>program</primary>
  <secondary
>typ</secondary
></indexterm>

<para
>Du gör dina val på vänstersidan längst upp i dialogrutan. När den visas finns en lista med kataloger, var och en med namnet på ett programspråk, som till exempel: </para>

<itemizedlist>
  <listitem
><para
>Ada <indexterm>
      <primary
>Ada</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C <indexterm>
      <primary
>C</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C++ <indexterm>
      <primary
>C++</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Databas (SQL-projekt) <indexterm>
      <primary
>SQL</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
    <indexterm>
      <primary
>Databas</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Fortran <indexterm>
      <primary
>Fortran</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Haskell <indexterm>
      <primary
>Haskell</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Java <indexterm>
      <primary
>Java</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Pascal <indexterm>
      <primary
>Pascal</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Perl <indexterm>
      <primary
>Perl</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>PHP <indexterm>
      <primary
>PHP</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Python <indexterm>
      <primary
>Python</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Ruby <indexterm>
      <primary
>Ruby</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Skal (Skript för skalet Bash) <indexterm>
      <primary
>Bash</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
    <indexterm>
      <primary
>skal</primary>
      <secondary
>nytt projekt</secondary
></indexterm>
  </para
></listitem>
</itemizedlist>

<para
>För att precisera, innehåller katalogerna i själva verket inte riktiga programmeringsverktyg. De leder till fördefinierade <emphasis
>mallar</emphasis
> som du kan använda som utgångspunkt för utveckling i ett språk. För att få en idé om vad som erbjuds, öppna bara en katalog i taget. Det finns en följd underkataloger i vissa, men bara en eller flera enkla beteckningar i andra. Underkatalogerna du ser organiserar de tillgängliga mallarna enligt vissa uppgifter, de enkla beteckningarna namnger mallar som du kan välja. </para>
<para
>Här kan vi inte i detalj gå in på vilka uppgifter varje mall tillhandahåller, men det är enkelt att ta reda på. Så fort du markerar en mallbeteckning, visas viss information i fälten till höger. I det nedre fältet ser du en <emphasis
>kort beskrivning</emphasis
> om vad mallen är avsedd att göra. I fältet ovanför visas en bild, om tillgänglig, med hur programmet som mallen producerar ser ut om du kompilerar och kör det utan ändring. Oftast är det en <emphasis
>skärmbild</emphasis
> av huvudfönstret som programmet visar. </para>
<para
>Välj mallen som bäst passar målen för ditt program som startpunkt. Skriv därefter in information om allmänna egenskaper i de nedre fälten, som visas i nästa kapitel. </para>

<formalpara>
<title
>Välja ett projekthanteringssystem</title>
<para
>Varje mall är kopplad till ett särskilt <link linkend="makesystems"
>projekthanteringssystem</link
>. För närvarande finns det inget direkt sätt att helt fritt välja ett sådant projekthanteringssystem. Du måste hitta en mall som passar dina behov, eller ändra projektet på motsvarande sätt efter det har skapats. </para>
</formalpara>

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

<sect3 id="new-projects-start-general">
<title
>Ange allmän information</title>

<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>egenskaper</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>egenskaper</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>program</primary>
  <secondary
>namn</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>namn</primary>
  <secondary
>program</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>katalog</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>katalog</primary>
  <secondary
>projekt</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>sökväg</primary>
  <secondary
>nytt projekt</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>upphovsman</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>e-post</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>upphovsman</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>e-post</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>main.cpp</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>main.cpp</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>licens</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>iicens</primary
></indexterm>

<para
>Den undre delen av sidan <guilabel
>Allmänt</guilabel
> i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
> är ett inramat fält som heter <guilabel
>Egenskaper</guilabel
>. Du måste tillhandahålla en del allmän information om projektet här, så att programguiden vet hur den ursprungliga strukturen ska byggas. </para>
<formalpara>
<title
>Programnamn</title>
<para
>Ditt program behöver förstås ett namn. Skriv in det i det övre fältet under <guilabel
>Egenskaper</guilabel
>, som heter <guilabel
>Programnamn</guilabel
>. Vi använder <guilabel
>Mitt_program</guilabel
> som exempel. </para>
</formalpara>
<para
>När du gör det, märker du att programguiden vägrar att acceptera specialtecken av något slag. De enda tecken som accepteras är: <itemizedlist>
  <listitem
><para
>små och stora bokstäver</para
></listitem>
  <listitem
><para
>siffror</para
></listitem>
  <listitem
><para
>tecknet understreck</para
></listitem>
</itemizedlist>
</para>
<para
>En framträdande orsak till begränsningen är att programguiden kommer att använda programnamnet som <emphasis
>bas för vissa klassnamn</emphasis
> som den skapar när den bygger upp projektet från början. Alltså måste projektets namn följa reglerna för programspråket som används. </para>
<formalpara>
<title
>Projektkatalogen</title>
<para
>Den andra utmärkande orsaken för begränsningen ser du på nedersta raden i området <guilabel
>Egenskaper</guilabel
>. Den heter <guilabel
>Slutgiltig plats</guilabel
>, och visar katalogen där programguiden skapar programmet. </para>
</formalpara>
<para
>När du skriver in programmets namn märker du att programguiden repeterar det du skriver in längst ner på raden <guilabel
>Slutgiltig plats</guilabel
>, men bara med små bokstäver. </para>
<para
>Alltså måste du välja  namn på det nya programmet med försiktighet. Om du slutar med en katalog som redan används, låter inte programguiden dig fortsätta till nästa steg, genom att behålla knappen <guibutton
>Nästa &gt;</guibutton
> inaktiv (grå). Den <emphasis
>varnar</emphasis
> dig också genom att lägga till <quote
>(fil eller katalog finns redan)</quote
> sist på raden <guilabel
>Slutgiltig plats</guilabel
>. </para>

<formalpara>
<title
>Startsökväg</title>
<para
>Det finns två sätt att välja en annan sökväg till det nya programmet. En är att använda ett annat namn. Det är dock inte alltid möjligt (t.ex. skapar du kanske en ny version av ett befintligt program). Som ett alternativ kan du välja en annan sökväg till programkatalogen. </para>
</formalpara>
<para
>Det görs i den andra radens inmatningsfält under <guilabel
>Egenskaper</guilabel
>, som heter <guilabel
>Plats</guilabel
>. Det du skriver in här är <emphasis
>överliggande sökväg</emphasis
> för det nya programmets utvecklingskatalog. Programguiden lägger till programnamnet sist i sökvägen när det nya projektet skapas. Resultatet visas på raden <guilabel
>Slutgiltig plats</guilabel
> för att bättre visa vad som händer. </para>
<para
>Programguiden kopierar ett <emphasis
>startvärde</emphasis
> till fältet <guilabel
>Plats</guilabel
> från början. Det hämtas från det du har valt under fältet <guilabel
>Standardprojektkatalog</guilabel
> under den <link linkend="setup-general"
>allmänna inställningen</link
>. I vårt fall har vi ställt in &kdevelop; att använda <filename class="directory"
>/home/utveckling/projekt/</filename
> som ursprunglig sökväg för nya projekt. </para>
<para
>Ändra innehållet i fältet <guilabel
>Plats</guilabel
>, så att utvecklingskatalogen för programmet som visas på raden <guilabel
>Slutgiltig plats</guilabel
> är unik. </para>

<note
><para
>Försäkra dig om att sökvägen du skriver in i fältet <guilabel
>Plats</guilabel
> redan finns. Annars kommer du inte att kunna fortsätta till nästa steg. Programguiden <emphasis
>varnar</emphasis
> dig om sökvägar som inte finns, genom att lägga till <quote
>(ogiltig)</quote
> sist på raden <guilabel
>Slutgiltig plats</guilabel
>. </para
></note>

<formalpara>
<title
>Personlig information</title>
<para
>Fälten som följer är inte så kritiska. Ange bara ditt namn (dvs. namnet på personen som är ansvarig för programmet) i fältet <guilabel
>Upphovsman</guilabel
>, och en giltig e-postadress i fältet <guilabel
>E-post</guilabel
>, så att användare kan ge dig återmatning om programmet. </para>
</formalpara>

<note>
<orderedlist>
  <listitem
><para
>Programguiden fyller i fälten med vissa förvalda värden, som tas från e-postinställningarna i KDE:s inställningscentral. Om de förvalda värdena i fälten <guilabel
>Upphovsman</guilabel
> och <guilabel
>E-post</guilabel
> under <guilabel
>Skapa nytt projekt</guilabel
> inte passar, bör du kontrollera e-postinställningarna i KDE:s inställningscentral. </para
></listitem>
  <listitem
><para
>Programguiden sammanställer informationen till startprogrammallar om de finns. För KDE C++ program, hittar du den till exempel i början av källkodsfilen <filename
>main.cpp</filename
>. </para
></listitem>
  <listitem
><para
>Fältet <guilabel
>E-post</guilabel
> är det <emphasis
>valfria</emphasis
> bland fälten, vilket beror på att alla utvecklare kanske inte har tillgång till Internet. Du kan lämna fältet tomt om du vill, och ändå fortsätta. </para
></listitem>
</orderedlist>
</note>

<formalpara>
<title
>Versions- och licensinformation</title>
<para
>Skriv till sist in startversion för det nya programmet i fältet <guilabel
>Version</guilabel
>, och välj licensen du vill ska gälla för ditt program i kombinationsrutan <guilabel
>Licens</guilabel
>. </para>
</formalpara>

<para
>Om du väljer en programtyp där programguiden tillhandahåller gemensamma källkodstextmallar (t.ex. C/C++), bör du titta på licensinformationstexten på tredje sidan i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
> (se kapitlet <link linkend="new-projects-start-templates"
>Ange mallar för deklarationer och källkod</link
> nedan). </para>
<para
>Om du valde <quote
>Egen</quote
> i kombinationsrutan <guilabel
>Licens</guilabel
> måste du själv tillhandahålla en licenstext. </para>

<note
><para
>Både version och licensinformation kommer också att infogas i startmallarna på ett lämpligt format som passar programtypen du väljer. </para
></note>

<para
>När du har skrivit in all den här informationen på ett riktigt sätt, tryck på knappen <guibutton
>Nästa &gt;</guibutton
> för att fortsätta, som visas i följande kapitel. </para>
</sect3
> <!-- new-projects-start-general -->

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

<sect2 id="new-projects-start-cvs">
<title
>Ange information om versionssystem</title>

<indexterm zone="new-projects-start-cvs">
  <primary
>CVS</primary>
  <secondary
>nytt projekt</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>projekt</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>databas</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>version</primary>
  <secondary
>databas</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs">
  <primary
>version</primary>
  <secondary
>CVS</secondary
></indexterm>

<para
>I det andra steget, leder programguiden dig till sidan <guilabel
>Versionskontrollsystem</guilabel
>, där du kan bestämma vilket versionskontrollsystem du vill använda. </para>

<note
><para
>Den här beskrivningen koncentreras endast på behoven för att skapa projekt. För mer information om CVS, se kapitlet <link linkend="cvs"
>Använda CVS</link
> nedan. </para
></note>

<formalpara>
<title
>Inget versionskontrollsystem önskas</title>
<para
>Från början är <quote
>Inget</quote
> valt i kombinationsrutan <guilabel
>Versionskontrollsystem</guilabel
>, och sidan är för övrigt tom. Om du inte vill använda ett versionskontrollsystem, klicka bara på knappen <guibutton
>Nästa</guibutton
> för att fortsätta. </para>
</formalpara>

<formalpara>
<title
>Använda CVS</title>
<para
>Annars måste du välja versionskontrollsystemet som du vill använda i kombinationsrutan <guilabel
>Versionskontrollsystem</guilabel
>. Vi använder <quote
>&cvs;</quote
> i vårt exempel. Om du väljer det, visar programguiden sidan igen, men nu innehåller den ett antal fält som du måste fylla i. </para>
</formalpara>

<screenshot id="screenshot-newproject-cvs">
  <mediaobject>
    <imageobject>
      <imagedata fileref="create-new-project-cvs.png" format="PNG"/>
    </imageobject>
    <caption
><para
>Ställa in ett nytt projekt för CVS </para
></caption>
  </mediaobject>
</screenshot>

<para
>Ett versionskontrollsystem som &CVS; (vilket betyder <quote
>Concurrent Versions System</quote
>) lagrar kopior av valda projektfiler i någon sorts databas. Om du använder &CVS;, kan du bland annat ladda upp (<quote
>arkivera</quote
>) filerna eller ladda ner dem till din projektkatalog (<quote
>checka ut</quote
>, eller <quote
>uppdatera</quote
>). Det särskilda med detta är att filerna i versionsdatabasen lagras på ett strukturerat sätt, vilket gör att du alltid kan återgå till ett tidigare utvecklingssteg om du behöver. &CVS; tillåter också flera utvecklare att ganska enkelt samarbeta i ett stort projekt (som &kdevelop;), utan att störa varandras arbete. </para>

<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>rot</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>rot</primary>
  <secondary
>CVS</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>lokal</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>fjärr</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>lokal CVS</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
>CVS-rot</title>
<para
>&cvs; måste <emphasis
>hantera</emphasis
> versionsdatabasen som det har med dina projektfiler. För att åstadkomma det har det en del speciell databasinformation i en egen katalog, som kallas <emphasis
>&cvs;-roten</emphasis
>. Det första steget för att ställa in &cvs; för det nya projektet, är alltså att tala om för &kdevelop; var roten finns. </para>
</formalpara>

<para
><emphasis
>Lokal &cvs;-rot.</emphasis
> Det finns två grundläggande möjligheter. Antingen vill du använda en <emphasis
>lokal</emphasis
> CVS-databas, eller använder du en databas som finns på en <emphasis
>fjärrserver</emphasis
>. Om du utvecklar på egen hand, kan du vilja använda &cvs;-databasen som ett sorts säkerhetskopieringssystem på din egen dator. Oftast skapas den i din hemkatalog och ges namnet <filename
>cvsroot</filename
>. Det kan se ut på följande sätt: </para>
<para
><userinput
><filename class="directory"
>/home/utveckling/cvsroot</filename
></userinput
> (där <filename
>devel</filename
> helt enkelt anger användaren <quote
>utveckling</quote
>, bara som ett exempel) </para>

<note
><para
>I själva verket är det här en förkortad form. Mer fullständigt ska den lokala &cvs;-roten adresseras med prefixet <computeroutput
>:local:</computeroutput
>. Den förkortade formen tillåts bara i fallen då filnamnet börjar med ett snedstreck (<computeroutput
>/</computeroutput
>). Det fullständiga namnet på vår lokala &cvs;-rot i exemplet skulle exakt se ut som: <filename class="directory"
>:local:/home/utveckling/cvsroot</filename
>. </para
></note>

<para
>Skriv in namnet på &cvs;-rotkatalogen som systemet har ställts in för i fältet <guilabel
>CVS-rot</guilabel
>. I princip kan du välja vilket namn som helst, och till och med använda flera &cvs;-databaser, men det är lämpligt att behålla &cvs;-roten när den väl har ställts in. </para>
<para
><emphasis
>Initiera en ny &cvs;-rot</emphasis
>. Om det inte finns en&cvs;-root, ännu kan &kdevelop; ställa in &CVS;-systemet att skapa ett åt dig i den givna katalogen. Markera bara kryssrutan <guilabel
>Initiera rot</guilabel
> under fältet <guilabel
>CVS-rot</guilabel
>. </para>
<note
><para
>Som sagt, <emphasis
>beordrar</emphasis
> bara &kdevelop; &CVS;-systemet att initiera en ny &cvs;-rot. Det gör ingenting själv med katalogen. Som tur är, är &cvs; smart nog att kontrollera om &cvs;-rotkatalogen redan finns. Därför gör det ingen skada om du skulle ha markerat <guilabel
>Initiera rot</guilabel
> för en befintlig &cvs;-rotkatalog. </para
></note>

<para
><emphasis
>Fjärr &cvs;-rot.</emphasis
> Det finns tillfällen då &cvs;-databasen ska finnas på en fjärrserver, särskilt när flera utvecklare arbetar med samma projekt. Då måste du skriva in &cvs;-rotens webbadress till servern i fältet <guilabel
>CVS-rot</guilabel
>. Om du till exempel vill komma åt &kde;:s &cvs;-server: </para>
<para
><userinput
><filename class="directory"
>:pserver:min_inloggning@cvs.kde.org:/home/kde</filename
></userinput
> (där <filename
>min_inloggning</filename
> anger inloggningsnamnet som är inställt i ditt &kde; &cvs;-konto) </para>

<indexterm zone="new-projects-start-cvs-remote">
  <primary
>Fjärr-CVS</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
>Servertyper för fjärr-&cvs;</title>
<para
>Det finns i huvudsak två fjärrservertyper för &cvs; med bred användning: <emphasis
>pserver</emphasis
> som använder ett lösenordssäkrat okrypterat protokoll, och <emphasis
>ext</emphasis
>-servern som använder krypterad dataöverföring via rsh eller ssh. De skiljs åt av webbadressprefixet de använder: </para>
</formalpara>
<para>
<filename
>:pserver:</filename>
</para>
<para
>för den okrypterade typen <quote
>lösenordsskyddad server</quote
>, och </para>
<para>
<filename
>:ext:</filename>
</para>
<para
>för en servertyp krypterad med rsh eller ssh. Till exempel </para>
<para>
<userinput
><filename class="directory"
>:ext:mylogin@cvs.sourceforge.net:/cvsroot/cervisia</filename
></userinput>
</para>
<para
>kommer åt &cvs;-roten för det brett använda &cvs;-hanteringsverktyget <application
>Cervisia</application
> på servern SourceForge. </para>
<para
>Om du vill använda en krypterad server via rsh eller ssh för att komma åt &cvs;, måste du tala om för &kdevelop; vilket krypteringsprotokoll som ska användas. Skriv bara in <userinput
>rsh</userinput
> eller <userinput
>ssh</userinput
> i fältet <guilabel
>CVS_RSH</guilabel
> på sidan <guilabel
>Versionskontrollsystem</guilabel
> i <guilabel
>Skapa nytt projekt</guilabel
>. </para>

<note
><para
>Det finns ett problem om du använder en krypterad server för &cvs; inne i &kdevelop;. Se kapitlet <link linkend="cvs"
>Använda CVS</link
> för detaljinformation. </para
></note>

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

<formalpara id="new-projects-start-cvs-repository">
<title
>&cvs;-arkivet</title>
<para
>Hittills har du talat om för &kdevelop; var &cvs;-roten finns, som hanterar versionsdatabasen och hur den ska kommas åt. Nu måste du tala om för &kdevelop; vilket namn du vill att &CVS; ska använda för att spara dina projektfiler i databasen. Ett sådan ställe där projektfilerna lagras i &cvs;, kallas ett <emphasis
>arkiv</emphasis
>. </para>
</formalpara>
<para
>I princip kan du använda vilket namn som helst för projektfilernas &cvs;-arkiv, så länge det uppfyller specifikationerna för att namnge en fil. Oftast använder ändå de flesta utvecklare själva programmets namn. &CVS; bygger en katalog med namnet under &cvs;-roten, därför hittas det enklare om du behåller programnamnet för det. </para>
<para
>Skriv bara in arkivnamnet som du vill använda i fältet <guilabel
>CVS-arkiv</guilabel
> på sidan <guilabel
>Versionskontrollsystem</guilabel
> under <guilabel
>Skapa nytt projekt</guilabel
>. I vårt exempel är det <userinput
>Mitt_program</userinput
>. </para>

<warning
><para
><emphasis
>Försäkra dig om att inte använda ett arkiv som redan finns!</emphasis
>. &CVS;-systemet varnar inte för duplicerade filer, utan skyfflar in allting som inte producerar en formell konflikt. Du ställer till allting! </para
></warning>

<formalpara>
<title
>Återstående fält</title>
<para
>Det återstår inte mycket arbete. Programguiden har redan ställt in återstående fält åt dig. Mer detaljerat: </para>
</formalpara>
<para
>Fältet <guilabel
>Leverantörstagg</guilabel
> används endast av kompatibilitetsskäl. Du kan behålla standardvärdet <quote
>leverantör</quote
> som programguiden skrivit in här. </para>
<para
>Fältet <guilabel
>Meddelande</guilabel
> gör det möjligt att skriva in en kommentar om innehållet i &cvs; från början. Använd vilken text du vill, eller behåll bara standardvärdet <guilabel
>nytt projekt</guilabel
> som programguiden skrivit in. </para>
<para
><guilabel
>Utgåvetagg</guilabel
> innehåller namnet som används som tagg för det ursprungliga tillståndet för projektet. En sådan <emphasis
>tagg</emphasis
> namnger ett visst tillstånd i &CVS;-arkivet, som du senare kan använda för att komma åt det tillståndet för utvecklingen. (Se vidare i kapitlet <link linkend="cvs"
>Använda CVS</link
>.) </para>
<para
>Programguiden har skrivit in standardtaggen <quote
>start</quote
> här, som är ett värdigt förslag. Behåll det bara. </para>

<note>
<para
>Om någon information om versionskontroll är fel, märker &kdevelop; det oftast inte förrän projektet skapas. Det är &CVS;-systemet som hittar felen när det försöker skapa arkivet. Därför måste du hålla ett öga på fönstret <guilabel
>Meddelanden</guilabel
> i &kdevelop; när projektet skapas under det sista inställningssteget. Om det var något fel med &CVS;, ser du oftast ett felmeddelande som det här: </para>

<screen
><computeroutput
><literal>
* cd '/home/utveckling/test' &amp;&amp; cvs -d '/home/utveckling/min_cvsrot' \
  import -m 'nytt projekt' '' 'leverantör' 'start' &amp;&amp;\
  sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \
  '/home/utveckling/min_cvsrot'
* cvs [import aborted]: /home/utveckling/min_cvsrot/CVSROOT: No such file or
  directory
* *** Exited with status: 1 ***
</literal
></computeroutput
></screen>

<para
>Om det här händer, måste du antingen ställa in &cvs; för hand (&kdevelop; ska ha lyckats initiera dina projektfiler vid detta tillfälle) eller ta bort projektkatalogen och börja om igen med <guimenuitem
>Nytt projekt</guimenuitem
> i menyn <guimenu
>Projekt</guimenu
>. </para>
</note>

<para
>Efter du har skrivit in all informationrelaterad till &CVS;, klicka på knappen <guibutton
>Nästa &gt;</guibutton
> för att fortsätta. </para>

<note
><para
>Om du vill rätta ett fel på föregående sida i <guilabel
>Skapa nytt projekt</guilabel
>, tryck bara på knappen <guibutton
>&lt; Tillbaka</guibutton
>. Programguiden kommer ihåg dina inställningar på nuvarande sida, så du kan enkelt fortsätta när du kommer tillbaka. </para
></note>

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

<sect2 id="new-projects-start-templates">
<title
>Ange mallar för deklarationer och källkod</title>

<para
>Nästa steg tar dig till en serie sidor, där du kan ställa in vanlig information som du vill inkludera i dina källkods- och deklarationsfiler, om uppgiften i fråga tillåter. </para>
<para
>Både deklarationsmallar och källkodsmallar tillhandahålls för C och C++ program, var och en på sin egen sida. För andra språk kanske det bara finns källkodsmallar. I vissa fall ser du till och med att mallsidan är tom. </para>
<para
>Om sidan används, fyller programguiden i några vanliga kommentarer i sidhuvudet, som kan se ut så här för ett C++ baserat program: </para>

<screen
><computeroutput
><literal>
/***************************************************************************
 *   Copyright (C) 2003 by Ditt namn                                       *
 *   du@du.se                                                           *
 *                                                                         *
 *   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
>Andra mallar tillhandahåller liknande information på ett format enligt definitionen av programspråket du vill använda. </para>
<para
>Som du kanske märkt, har programhanteringen redan fyllt i viss information som du angav på den fösta sidan <guilabel
>Allmänt</guilabel
> i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
>, närmare bestämt innehållet i fälten <guilabel
>Upphovsman</guilabel
> och <guilabel
>E-post</guilabel
>. Riktig licensinformation har också infogats, enligt ditt val i kombinationsrutan <guilabel
>Licens</guilabel
>. </para>

<sect3 id="new-projects-start-templates-edit">
<title
>Hur mallarna kan redigeras</title>

<indexterm zone="new-projects-start-templates-edit">
  <primary
>mallar</primary>
  <secondary
>projekt</secondary>
  <tertiary
>redigera</tertiary
></indexterm>
<indexterm zone="new-projects-start-templates-edit">
  <primary
>projekt</primary>
  <secondary
>mallar</secondary>
  <tertiary
>redigera</tertiary
></indexterm>

<para
>Mallarna som du ställer in i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
> behandlas varje gång du talar om för &kdevelop; att skapa en ny källkodsfil och/eller deklarationsfil. Informationen som du anger här, inkluderas längst upp i ett dokumentationshuvud, innan koden börjar. </para>
<para
>Du är dock inte begränsad till ren text. &kdevelop; känner till flera variabler, som låter dig inkludera riktig information i filen. Programguiden använda i själva verket just några sådana variabler för att inkludera information om <guilabel
>Upphovsman</guilabel
>, <guilabel
>E-post</guilabel
> och <guilabel
>Licens</guilabel
> i den ursprungliga malltexten. </para>

<formalpara>
<title
>Infoga filinformation från &doxygen;</title>
<para
>Om du till exempel vill att dokumentationen av programvarugränssnittet som &doxygen; skapar, ska visa ytterligare information om filens innehåll i listan med filnamn, kan du lägga till följande rader i källkodsfilens mall: </para>
</formalpara
><screen
><computeroutput
><literal>
/**
 * \file $MODULE$.cpp
 * \brief (skriv en kort beskrivning här).
 **/
</literal
></computeroutput
></screen>
<para
>Så fort du skapar en ny källkodsfil, ersätter &kdevelop; variabeln <computeroutput
>$MODULE$</computeroutput
> med namnet på den nyskapade filen. Om du till exempel skapar en ny C++ klass som heter <classname
>EnEnkelTest</classname
>, ser du följande rader i filen <filename
>enenkeltest.cpp</filename
>: </para>
<screen
><computeroutput
><literal>
/**
 * \file enenkeltest.cpp
 * \brief (skriv en kort beskrivning här).
 **/
</literal
></computeroutput
></screen>
<para
>Du måste fortfarande tillhandahålla den korta beskrivningen efter nyckelordet <quote
>\brief</quote
>, men en del av jobbet har redan gjorts automatiskt åt dig. </para>
<formalpara>
<title
>Textfilen med licensen</title>
<para
>Som ett annat exempel skulle du kunna inkludera en explicit referens till licenstexten som du vill använda i mallen. Använd variabeln <computeroutput
>$LICENSEFILE$</computeroutput
> för detta, och lägg till exempel till följande rad: </para>
</formalpara>
<screen
><computeroutput
><literal>
//   Se $LICENSEFILE$ för den fullständiga licenstexten.
</literal
></computeroutput
></screen>
<para
>Programguiden ersätter <computeroutput
>$LICENSEFILE$</computeroutput
> med namnet på filen där den fullständiga licenstexten finns, nämligen: </para>
<screen
><computeroutput
><literal>
//   Se COPYING för den fullständiga licenstexten.
</literal
></computeroutput
></screen>
<para
>för GPL-licensen, eller </para>
<screen
><computeroutput
><literal>
//   Se LICENSE.BSD för den fullständiga licenstexten.
</literal
></computeroutput
></screen>
<para
>om du bestämmer dig för att använda BSD-license för programmet. </para>
<para
>Det finns förstås fler variabler som &kdevelop; känner till. Se avsnittet <link linkend="newfiles-edittemplates"
>Redigera mallarna</link
> i kapitlet <link linkend="editing"
>Redigeringsverktyg</link
> för att hitta vad som är möjligt. </para>

<note
><para
>Mallarna som du definierar här får ingen effekt förrän programguiden skapar det nya projektet. Du hittar informationen längst upp i filerna som du själv skapar under utvecklingsprocessen. När de ursprungliga filerna skapas, använder programguiden några fördefinierade standardmallar. Du måste anpassa de ursprungliga filerna till dina behov för hand. </para
></note>

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

<sect2 id="new-projects-start-build">
<title
>Bygg de ursprungliga projektfilerna</title>

<indexterm zone="new-projects-start-build">
  <primary
>projekt</primary>
  <secondary
>nytt</secondary>
  <tertiary
>bygg</tertiary
></indexterm>
<indexterm zone="new-projects-start-build">
  <primary
>projekt</primary>
  <secondary
>ursprunglig byggning</secondary
></indexterm>

<para
>Nu är nästan allt klart. På den sista sidan i mallen, har knappen <guibutton
>Nästa &gt;</guibutton
> ändrats så att den nu lyder <guibutton
>Slutför</guibutton
>. </para>
<para
><emphasis
>Tänk efter innan du klickar på den!</emphasis
> Du har fortfarande möjlighet att granska allting genom att använda knappen <guibutton
>&lt; Tillbaka</guibutton
> upprepade gånger. Eftersom programguiden kommer ihåg all information du hittills matat in, kan det vara lämpligt att ta dig tid att titta tillbaka en gång till. Om du använder lokal CVS, glöm inte att kontrollera namnet på <emphasis
>CVS-arkivet</emphasis
> igen (det ska inte redan finnas någon underkatalog med det namnet i CVS-rotkatalogen. Om det gör det, försök med ett annat arkivnamn). </para>
<para
>Om du någon gång inte vill att det nya projektet ska byggas, avbryt dialogrutan <guilabel
>Skapa nytt projekt</guilabel
> med knappen <guibutton
>Avbryt</guibutton
>. Klicka annars på <guibutton
>Slutför</guibutton
>, och se i fönstret <guilabel
>Meddelanden</guilabel
> hur programguiden skapar projektet. </para>
<para
>Om du vill använda ett versionshanteringssystem (&CVS;), sker det i själva verket två genomgångar. Programguiden bygger först projektkatalogerna och anropar sedan &CVS;-programmet som återstartar fönstret <guilabel
>Meddelanden</guilabel
> med sitt eget innehåll. Om något fel uppstår i någon av genomgångarna, stannar processen och visar dig motsvarande felmeddelande i fönstret. </para>

<note
><para
>I många fall, när det nya projektet har skapats på det här sättet, laddar &kdevelop; automatiskt källkodsfilen eller filerna för en eller fler av de grundläggande viktiga modulerna, så att du kan enkelt börja arbeta. (Vilka källkodsmoduler som visas, om några alls, beror dock på mallen som från början valdes i programguiden.) </para
></note>

<para
>Glöm inte att kontrollera vad programguiden tillhandahåller från början. Du kanske till exempel vill ändra ursprunglig information i filhuvuden enligt dina egna mallar. Oftast hittar du dem i underkatalogen <filename class="directory"
>templates</filename
> i projektkatalogen. Några enkla kopieringsåtgärder räcker oftast. </para>
<para
>Därefter är det lämpligt att du <emphasis
>kompilerar det ursprungliga projektet</emphasis
> innan du försöker ändra någon kod. I de flesta fall ska den här första kompileringen vara möjlig. På så sätt kan du avgöra om projektet verkligen skapades enligt dina behov. Om det inte gjorde det, ta helt enkelt bort projektkatalogen (i den lokala &CVS;-roten också, om du använder en) och börja om. </para>

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

  <indexterm zone="defaultbuild-warning">
    <primary
>förvald bygginställning</primary>
    <secondary
>varning</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>bygginställningar</primary>
    <secondary
>varning om förvald bygginställning</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>varning</primary>
    <secondary
>förvald bygginställning</secondary
></indexterm>

  <para
>Innan du kompilerar det nya projektet för första gången, ta en titt på <menuchoice
><guimenu
>Projekt</guimenu
> <guimenuitem
>Bygginställning</guimenuitem
></menuchoice
>. Om det finns tre alternativ som visas: <guimenuitem
>default</guimenuitem
>, <guimenuitem
>optimized</guimenuitem
> och <guimenuitem
>debug</guimenuitem
>, med <guimenuitem
>debug</guimenuitem
> markerat, behåll det för all del, eller använd <guimenuitem
>optimized</guimenuitem
> istället. </para>
  <para
>På grund av vissa begränsningar i den nuvarande inställningen av autoconf och automake, ska du <emphasis
>under inga omständigheter</emphasis
> bygga med inställningen <guimenuitem
>default</guimenuitem
>. Det förstör vissa interna kataloginställningar, och gör att <command
>configure</command
> klagar när du senare försöker använda det med bygginställningarna <guimenuitem
>optimized</guimenuitem
> eller <guimenuitem
>debug</guimenuitem
>. </para>
  <para
>(Det här gäller bara för dessa flervalsmöjligheter. Om programtypen du valde bara tillhandahåller bygginställningen <guimenuitem
>default</guimenuitem
>, ska du förstås använda den.) </para>
</warning>

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

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

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

<sect1 id="applicationwizard-behind">
<title
>Bakom ridån</title>

<indexterm zone="applicationwizard-behind">
  <primary
>projekt</primary>
  <secondary
>nytt</secondary>
  <tertiary
>bygg</tertiary
></indexterm>
<indexterm zone="applicationwizard-behind">
  <primary
>CVS</primary>
  <secondary
>nytt projekt</secondary>
  <tertiary
>bygg</tertiary
></indexterm>

<para
>Det är alltid lämpligt att titta på utskrivna meddelanden och försöka förstå vad som har hänt. Åtminstone i princip bör du veta vad som ska göras när programguiden skapar det nya projektet. Vi kan inte gå in på detaljer, men ger en översikt över dessa meddelanden för att få en idé om vad som pågick bakom ridån. </para>

<tip>
<para
>Om projektet ställdes in för lokal &CVS;, fick du två uppsättningar med meddelanden, där den första uppsättningen försvann innan du kunde läsa den ordentligt, eftersom &CVS; använde fönstret <guilabel
>Meddelanden</guilabel
> för sitt eget syfte. Så vi sparade båda följderna i separata körningar: skapade programmet två gånger, en gång utan &CVS;, tog bort katalogen och började om, den här gången med inställning av programmet med &CVS;. </para>
<para
>Du bör följa samma procedur om något konstigt hände, och du bara inte kunde fånga meddelanden från det första inställningssteget. </para>
</tip>
<para
>Vi tar en titt i utmatningen under <guilabel
>Meddelanden</guilabel
> för båda stegen: <itemizedlist>
  <listitem
><para
><link linkend="applicationwizard-behind-app"
>Ställa in programmet</link
> samt </para
></listitem>
  <listitem
><para
><link linkend="applicationwizard-behind-cvs"
>Ställa in &CVS;</link
>. </para
></listitem>
</itemizedlist>
</para>

<sect2 id="applicationwizard-behind-app">
<title
>Ställa in programmet</title>

<indexterm zone="applicationwizard-behind-app">
  <primary
>Perl</primary>
  <secondary
>nytt projekt</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
>projekt</primary>
  <secondary
>kdevelop.pm</secondary
></indexterm>

<para
>Om du ställt in <quote
>Mitt_program</quote
> som i föregående exempel, ska programguiden ha skrivit ut följande meddelanden (vi arrangerade om utmatningen en del för ökad läsbarhet, och du kan klicka på vilken rad som helst för att gå till beskrivningen av den): </para>
<screen
><computeroutput>
* <link linkend="applicationwizard-behind-app-perl"
>perl</link
> /opt/kde3/share/apps/kdevappwizard/template-kapp/script \
  --author='Ditt namn' \
  --email='du@du.se' \
  --version='0.1' \
  --appname='Mitt_program' \
  --dest='/home/utveckling/projekt/mitt_program' \
  --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
* *** Success ***
</computeroutput
></screen>
<formalpara id="applicationwizard-behind-app-perl">
<title
>Ett anropat &perl;-skript</title>
<para
>Som du ser på första raden, skapade programguiden ett anrop till ett &perl;-program från inställningarna som du gjorde i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
>. Det anropade skriptet <filename
>script</filename
> finns i en katalog som bestäms av typen av programmall du valde i övre delen på sidan <guilabel
>Allmänt</guilabel
> i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
>. </para>
</formalpara>
<para
>I vårt fall finns filen <filename
>script</filename
> i katalogen <filename class="directory"
>/opt/kde3/share/apps/kdevappwizard/template-kapp/</filename
>. Ersätt bara <filename class="directory"
>/opt/kde3/</filename
> med &kde;-katalogen på ditt system. </para>
<para
>Det här &perl;-skriptet <filename
>script</filename
> anropas med en följd kommandoradsväljare, alla markerade med prefixet <quote
><computeroutput
>--</computeroutput
></quote
>, där programguiden placerar information från de övriga valen du gjorde i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
>. </para>
<para
>Den exakta följden av initieringssteg beror på vilket &perl;-skript som anropades. Om du vill kontrollera det, titta bara i filen <filename
>script</filename
> som anropades av kommandot <computeroutput
>perl</computeroutput
> på första raden i fönstret <guilabel
>Meddelanden</guilabel
>. </para>
<note
><para
>Inställningsskripten använder ett antal subrutiner i &perl; samlade i filen <filename
>kdevelop.pm</filename
>, som du hittar i underkatalogen <filename class="directory"
>share/apps/kdevwizard/template-common/</filename
> i din &kde;-installation. </para
></note>

<formalpara id="applicationwizard-behind-app-base">
<title
>Programmets baskatalog</title>
<para
>När &perl;-skriptet körs, får du en följd meddelanden om vad som <emphasis
>ska göras</emphasis
> i nästa installationssteg. Först skapas en <computeroutput
>målkatalog</computeroutput
>. Det är programmets baskatalog, precis det som visades på raden <guilabel
>Slutgiltig plats</guilabel
> på sidan <guilabel
>Allmänt</guilabel
> i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
>. Skriptet använder värdet på väljaren <computeroutput
>--dest</computeroutput
> i &perl;-kommandot ovan. </para>
</formalpara>

<indexterm zone="applicationwizard-behind-app-templates">
  <primary
>projekt</primary>
  <secondary
>mallar</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-templates">
  <primary
>mallar</primary>
  <secondary
>projekt</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-templates">
<title
>Filmallarna</title>
<para
>I nästa steg kopieras filmallarna du ställde in i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
> till underkatalogen <filename class="directory"
>templates</filename
> i denna målkatalog. Som du kan se från väljaren <computeroutput
>--filetemplates</computeroutput
> anges mallarna i par: Suffixet de används för först, följt av namnet på den tillfälliga fil dit projektguiden har kopierat innehållet i dialogrutans mallsidor. Suffixen används som filnamn där malltexterna lagras. </para>
</formalpara>
<para
>I vårt exempel, installerades två sådana mallfiler, nämligen <filename
>templates/h</filename
> för C++ deklarationsfiler och <filename
>templates/cpp</filename
> för C++ källkodsfiler. </para>

<indexterm zone="applicationwizard-behind-app-license">
  <primary
>projekt</primary>
  <secondary
>licens</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-license">
  <primary
>iicens</primary
></indexterm>

<formalpara id="applicationwizard-behind-app-license">
<title
>Licensfilen</title>
<para
>På sidan <guilabel
>Allmänt</guilabel
> i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
>, valde du licensen som du vill ska gälla för programmet. Programguiden utför två åtgärder baserat på detta. En är licensinformationen som den skrev i mallarna. Den andra åtgärden gör att motsvarande licensfil kopieras till programmets baskatalog. </para>
</formalpara>
<para
>Väljaren <computeroutput
>--licensefile</computeroutput
> talar om för &perl;-skriptet <filename
>script</filename
> vilken licenstextfil som ska kopieras. I vårt exempel kommer filen <filename
>/home/utveckling/projekt/mitt_program/COPYING</filename
> att ha installerats. </para>

<indexterm zone="applicationwizard-behind-app-admin">
  <primary
>projekt</primary>
  <secondary
>administration</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-admin">
  <primary
>administration</primary
></indexterm>

<formalpara id="applicationwizard-behind-app-admin">
<title
>Administrationskatalogen</title>
<para
>&kdevelop; behöver en uppsättning filer för att administrera projektet. De läggs i underkatalogen <filename class="directory"
>admin</filename
> i ditt programs baskatalog. </para>
</formalpara>
<para
>Programguiden skapar underkatalogen <filename class="directory"
>admin</filename
> i det här steget, och extraherar standarduppsättningen filer som behövs från det komprimerade arkivet <filename
>share/apps/kdevappwizard/template-common/admin.tar.gz</filename
> allt från &kde;-katalogen. </para>
<note
><para
>&kdevelop; använder alltid samma uppsättning standardfiler för administrativa ändamål. Därför behövs ingen parameter i anropet till &perl;-skriptet <filename
>script</filename
> för att skapa underkatalogen <filename class="directory"
>admin</filename
>. </para
></note>

<indexterm zone="applicationwizard-behind-app-gnu">
  <primary
>GNU</primary>
  <secondary
>kodningsstandard</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-gnu">
<title
>Filer i &GNU;:s kodningsstandard</title>
<para
>Det finns flera standardfiler som ska distribueras med alla program som följer &GNU; kodningsstandard. &perl;-skriptet <filename
>script</filename
> hämtar dessa filer från det komprimerade arkivet <filename
>share/apps/kdevappwizard/template-common/gnu.tar.gz</filename
> i &kde;:s installationskatalog, och anpassar dem enligt informationen som du angav i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
>. </para>
</formalpara>
<para
>Efter det här steget hittar du följande filer i programmets baskatalog: <itemizedlist>
  <listitem
><para
><filename
>AUTHORS</filename
>, som från början innehåller information från väljarna <computeroutput
>--author</computeroutput
> och <computeroutput
>--email</computeroutput
>. </para
></listitem>
  <listitem
><para
><filename
>COPYING</filename
>, det här är den allmänna &GNU;-licensen, som alla program som följer &GNU; måste innehålla, även om du bestämmer att ditt program ska ha en annan licens. </para
></listitem>
  <listitem
><para
><filename
>ChangeLog</filename
>, från början tom. Du bör protokollföra alla större ändringar här. </para
></listitem>
  <listitem
><para
><filename
>INSTALL</filename
> innehåller generella installationsinstruktioner. Ändra detta om särskild försiktighet eller särskilda procedurer kan behövas för att installera programmet. </para
></listitem>
  <listitem
><para
><filename
>README</filename
>, från början tom. Skriv in all information som användaren bör känna till innan programmet installeras. </para
></listitem>
  <listitem
><para
><filename
>TODO</filename
>, från början tom. Skriv in information om vad som måste göras för att utveckla programmet ytterligare här. Du kan använda detta som ett anteckningsblock för eget syfte, men det är dessutom till stor hjälp när programmet är publicerat för allmänheten. </para
></listitem>
</itemizedlist>
</para>

<indexterm zone="applicationwizard-behind-app-doc">
  <primary
>projekt</primary>
  <secondary
>dokumentation</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-doc">
  <primary
>dokumentation</primary>
  <secondary
>projekt</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-doc">
<title
>Den ursprungliga programdokumentationen</title>
<para
>Alla projekt du skapar, kommer att innehålla en ursprunglig <emphasis
>DocBook</emphasis
>-mall, som du kan använda när du börjar skriva programdokumentationen. I det här steget har &perl;-skriptet <filename
>script</filename
> skapat underkatalogerna <filename class="directory"
>doc</filename
> och <filename class="directory"
>doc/en</filename
> i programmets baskatalog med den ursprungliga mallen <filename
>doc/en/index.docbook</filename
> och några &automake; <filename
>Makefile.am</filename
> filer, som &kdevelop; senare kan använda för att bygga hjälpsystemfiler. </para>
</formalpara>

<indexterm zone="applicationwizard-behind-app-project">
  <primary
>projekt</primary>
  <secondary
>projektfil</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-project">
  <primary
>&kdevelop;</primary>
  <secondary
>projektfil</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-project">
<title
>Projektfilen</title>
<para
>Hittills har det mesta av det allmänna sakerna skapats, det som mer eller mindre finns i alla &kdevelop;-projekt. Med det här steget börjar den mer programspecifika inställningsprocessen. Den kan variera beroende på programtyp du valt. Ta en titt på det verkliga &perl;-skriptet <filename
>script</filename
> som programguiden anropade åt dig för att skapa det nya programmet, om du vill titta på detaljerna. Vi fortsätter att följa stegen i exemplet som listas ovan. </para>
</formalpara>
<para
>I det första av dessa steg, kopieras <emphasis
>projekthanteringsfilen i &kdevelop;</emphasis
> från mallkatalogen, där &perl;-skriptet <filename
>script</filename
> finns. I vårt fall kopierades filen <filename
>share/apps/kdevappwizard/template-kapp/app.kdevelop</filename
> till programmets baskatalog och anpassades enligt de val som gjorts i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
>. </para>

<note
><para
>Du kanske vill ta en titt på den resulterande projektfilen, som i vårt fall sparades som <filename
>/home/utveckling/projekt/mitt_program.kdevelop</filename
>. Den är skriven på XML-format, och kan enkelt visas med <application
>Kate</application
> eller någon annan texteditor. Men var försiktig så att ingenting ändras, eftersom &kdevelop; är beroende av innehållet. </para
></note>

<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>projekt</primary>
  <secondary
>ramverk</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>projekt</primary>
  <secondary
>programramverk</secondary
></indexterm>
<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>ramverk</primary
></indexterm>
<indexterm zone="applicationwizard-behind-app-framework">
  <primary
>program</primary>
  <secondary
>ramverk</secondary
></indexterm>

<formalpara id="applicationwizard-behind-app-framework">
<title
>Programramverket</title>
<para
>Nu är det hög tid att katalogstrukturen och andra underhållsfiler skapas, att lägga det nya programmet i och göra det möjligt att underhålla det. Ett så kallat <emphasis
>programramverk</emphasis
> skapas i detta steg. Dess struktur beror i grunden på programtyp som du valde i dialogrutan <emphasis
>Skapa nytt projekt</emphasis
>, men delar av det är nog vanliga för att också hittas i andra projekt. </para>
</formalpara>
<para
>I vårt fall har följande katalogstruktur skapats i programmets baskatalog <filename class="directory"
>/home/utveckling/projekt/mitt_program/</filename
>. <itemizedlist>
  <listitem
><para
>Underkatalogen <filename
>src</filename
> är avsedd att innehålla programmets källkodsfiler. </para
></listitem>
  <listitem
><para
>Underkatalogen <filename
>debug</filename
> innehåller den kompilerade utmatningen från <emphasis
>bygginställningen för <quote
>avlusning</quote
></emphasis
>. (Se kapitlet <link linkend="buildconfigurations"
>Bygginställningar</link
> för att lära dig mer om detta.) Som namnet anger, ska du använda den här katalogen för avlusningssyfte. </para
></listitem>
  <listitem
><para
>Underkatalogen <filename
>optimized</filename
> innehåller den kompilerade utmatningen från den <emphasis
><quote
>optimerade</quote
> bygginställningen</emphasis
>. Du bör testa en optimerad version av programmet därifrån. </para
></listitem>
  <listitem
><para
>Underkatalogen <filename
>po</filename
> är avsett för <emphasis
>översättningssyften</emphasis
>. Det kommer att innehålla filer som kallas <quote
>Portable Object</quote
> (<filename
>.po</filename
>-filer) och mallar (<filename
>.pot</filename
>-filer), som behandlas av ett översättningsprogram, som t.ex. <application
>Kbabel</application
>. </para
></listitem>
</itemizedlist>
</para>
<para
>Alla dessa kataloger förblir inte tomma, utan fylls med en följ av <filename
>Makefile</filename
> och andra filer som &kdevelop; använder för att behandla programmets källkod. Några ursprungliga ikoner för det nya programmet har också placerats i underkatalogen <filename
>src</filename
>, om nödvändigt. I vårt fall hittar du två stycken: <filename
>src/hi16-app-mitt_program.png</filename
> och <filename
>src/hi32-app-mitt_program.png</filename
> som båda innehåller vanliga &kde;-programikoner. </para>

<formalpara id="applicationwizard-behind-app-sources">
<title
>Installerad programkällkod</title>
<para
>Ramverket kommer till sist användas för att lägga till <emphasis
>ursprungliga källkodsfiler</emphasis
> för det nya projektet i katalogen <filename class="directory"
>src</filename
>. De verkliga filerna beror helt och hållet på programtypen du valde i dialogrutan <guilabel
>Skapa nytt projekt</guilabel
>. Du ser snart själv, eftersom det här är vad du verkligen måste arbeta med. </para>
</formalpara>

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

<sect2 id="applicationwizard-behind-cvs">
<title
>Ställa in &CVS;</title>

<indexterm zone="applicationwizard-behind-cvs">
  <primary
>CVS</primary>
  <secondary
>nytt projekt</secondary>
  <tertiary
>bygg</tertiary
></indexterm>
<indexterm zone="applicationwizard-behind-cvs">
  <primary
>projekt</primary>
  <secondary
>CVS</secondary
></indexterm>

<para
>Låt oss nu ta en titt på vad fönstret <guilabel
>Meddelanden</guilabel
> innehåller när programguiden fortsätter att bygga vårt projektexempel. Om inget fel uppstod under första genomgången, återställs innehållet i <guilabel
>Meddelanden</guilabel
> för att skapa det lokala &cvs;-arkivet. </para>
<para
>Som tidigare formaterade vi om de utskrivna raderna lite grant för ökad läsbarhet. Vi tog också bort några onödiga rader (där punkterna <quote
>. . .</quote
> finns). </para>

<screen
><computeroutput>
* cd '/home/utveckling/mitt_program' \
  &amp;&amp; cvs -d '/home/utveckling/cvsroot' \
         import -m 'nytt projekt' \
                'Mitt_program' \
                'leverantör' \
                'start' \
  &amp;&amp; sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . \
                                                 'Mitt_program' \
                                                 '/home/utveckling/cvsroot'
  . . .
* N Mitt_program/NEWS
* N Mitt_program/TODO
* N Mitt_program/README
  . . .
* N Mitt_program/admin/configure.in.bot.end
* N Mitt_program/templates/h
* N Mitt_program/templates/cpp
*
* No conflicts created by this import
*
* *** Success ***
</computeroutput
></screen>

<para
>Som du ser från den första meddelanderaden, skapade programguiden en ny skalkommandorad som styr arbetet som &cvs; ska göra. Först går skalet till den nyskapade baskatalogen för programmet, för att använda det som standardkatalog för följande steg. </para>

<formalpara>
<title
>Bygga &CVS;-arkivet</title>
<para
>På den andra delen av kommandoraden, anropas &CVS;-programmet för att <emphasis
>importera</emphasis
> det ursprungliga projektinnehållet till det önskade arkivet. Återigen styrs arbetet i detalj av ett antal kommandoradsväljare i anropet till &CVS;-programmet. </para>
</formalpara>
<itemizedlist>
  <listitem
><para
><computeroutput
>-d '/home/utveckling/cvsroot'</computeroutput
>: väljaren <computeroutput
>-d</computeroutput
> talar om för &CVS; vilken rotkatalog som ska användas. I vårt fall är det den <emphasis
>lokala &cvs;-roten</emphasis
> som finns i <filename class="directory"
>/home/utveckling/cvsroot</filename
>. </para
></listitem>
  <listitem
><para
><computeroutput
>import</computeroutput
>: Talar om för &CVS;-programmet vilken åtgärd som ska utföras med roten. Vi vill <emphasis
>importera</emphasis
> filer till &cvs;-databasen. För att åstadkomma det, måste kommandot <computeroutput
>import</computeroutput
> ha några egna väljare: <itemizedlist>
      <listitem
><para
><computeroutput
>-m 'nytt projekt'</computeroutput
>; Väljaren <computeroutput
>-m</computeroutput
> ger en <emphasis
>meddelandetext</emphasis
> till import för åtgärden. Den kommer att lagras i databasen, och kan senare hämtas för att identifiera data som lagrades i det här steget. I vårt fall anger <quote
><computeroutput
>nytt projekt</computeroutput
></quote
> att vi lagrar våra första filer i databasen. </para
></listitem>
      <listitem
><para
><computeroutput
>'Mitt_program'</computeroutput
>: Den andra väljaren talar om för &CVS; vilket <emphasis
>arkiv</emphasis
> som ska användas. Om det inte finns, skapas det innan filimportåtgärderna. i det här fallet skapas arkivet <filename
>Mitt_program</filename
>. </para
></listitem>
      <listitem
><para
><computeroutput
>'leveratör'</computeroutput
>: Den följande väljaren är en <emphasis
>tagg</emphasis
>, ett symboliskt namn som markerar en följd av filer i katalogen. Det finns flera betydelser en sådan tagg kan ha (se <link linkend="cvs"
>Använda CVS</link
> för mer information). Den här markerar i princip hela gruppen med filer som någonsin lagras i det här arkivet i framtiden. Den är inte av någon särskild nytta för oss, så <quote
><computeroutput
>leveratör</computeroutput
></quote
> är ett lika bra namn som något annat. </para
></listitem>
      <listitem
><para
><computeroutput
>'start'</computeroutput
> är en annan tagg. Den markerar <emphasis
>utgåvan</emphasis
>, med enkla ord en följd av senare sparade filer som hör ihop. Vi använder <quote
><computeroutput
>start</computeroutput
></quote
> här, en beskrivning som passar in på användningen av den här ursprungliga följden. </para
></listitem>
    </itemizedlist>
  </para
></listitem>
</itemizedlist>

<formalpara>
<title
>De importerade filerna</title>
<para
>&CVS;-programmet skapar arkivet, och börjar sedan importera alla filer från katalogen <filename class="directory"
>/home/utveckling/projekt/mitt_program</filename
>. Det rapporterar därefter alla filer som laddas. Det är innehållet i en hel mängd rader med <quote
><computeroutput
>N</computeroutput
></quote
> som följer i fönstret <guilabel
>Meddelanden</guilabel
>. Bokstaven <computeroutput
>N</computeroutput
> anger att filen är ny och importerades till arkivet. </para>
</formalpara>
<para
>Beroende på det nya programmets typ finns det en hel del av raderna med <quote
><computeroutput
>N</computeroutput
></quote
>. Vi avkortade utmatningen, för att bara visa den första och de tre sista raderna som ett exempel. </para>

<formalpara>
<title
>Meddelande att &CVS; lyckades</title>
<para
>&CVS; rapporterar alltid när en åtgärd utförts med lyckat resultat. I vårt fall skrevs meddelandet <quote
><computeroutput
>No conflicts created by this import</computeroutput
></quote
> ut, följt av den allmänna raden <quote
><computeroutput
>*** Success ***</computeroutput
></quote
> eftersom ingen ytterligare åtgärd behövde utföras. </para>
</formalpara>

<note
><para
>Det <emphasis
>skulle</emphasis
> kunnat finnas några felmeddelanden om filer med konflikter om arkivet redan fanns, eftersom &CVS; kontrollerar filinnehållet enligt vissa formella kriterier, och rapporterar alla konflikter som det möjligen hittar. </para
></note>

<formalpara>
<title
>Bygga &cvs; administrativa poster</title>
<para
>&CVS;-importåtgärden är avslutat i detta ögonblick. Arkivet har skapats, och alla filer vi vill behålla har lagrats i databasen. Ändå så återstår mer arbete, eftersom &CVS;-programmet behöver ha viss administrativ information i varje katalog under programmet. Det använder informationen senare, för att kommunicera med CVS-roten och arkivet. </para>
</formalpara>
<para
>Om vi arbetade enbart med &CVS;, skulle vi behöva ge en möjlighet för &CVS; att lagra informationen i arbetskatalogen. Vi skulle till exempel kunna <emphasis
>checka ut</emphasis
> filerna igen i en tom baskatalog, då &CVS; automatiskt skulle utföra alla administrativa åtgärderna tillsammans med de utcheckade filerna. </para>
<para
>Det finns ett enklare sätt i &kdevelop;, som tur är. Det tillhandahåller skalskriptet <filename
>buildcvs.sh</filename
> i katalogen <filename class="directory"
>/opt/kde3/share/apps/kdevcvs/</filename
> (igen, ersätt <filename class="directory"
>/opt/kde3</filename
> med &kde;:s installationskatalog), som programguiden anropar efter &CVS;-programmet har utfört sitt arbete med lyckat resultat. </para>
<para
>Skriptet <filename
>buildcvs.sh</filename
> skapar i huvudsak en <filename class="directory"
>CVS</filename
>-underkatalog i varje katalog i programmets stomme. Var och en av dessa <filename class="directory"
>CVS</filename
>-underkataloger innehåller följande tre filer: </para>
<itemizedlist>
  <listitem
><para
><filename
>Root</filename
> innehåller namnet på servern där &cvs;-roten finns. I vårt fall är det den lokala roten <filename
>/home/utveckling/cvsroot</filename
>. Orsaken till detta är att alltid samma arkiv ska användas för filerna, eftersom &CVS; inte lagrar hela filerna, utan bara <emphasis
>skillnaderna</emphasis
> för följande delar. Det sparar mycket diskutrymme, men gör det nödvändigt att all följande information hålls samman under alla omständigheter. </para
></listitem>
  <listitem
><para
><filename
>Repository</filename
> tjänar samma syfte. &CVS; har namnet på arkivet som ska användas här, i vårt fall <filename
>Mitt_program</filename
>. </para
></listitem>
  <listitem
><para
><filename
>Entries</filename
> innehåller namnen och en del annan information om filerna som &CVS; tar hand om i katalogen. Det beror på att &CVS; inte nödvändigtvis lägger alla programfiler i arkivet. Du kan tala om vilka filer som ska lagras, och vilka som ska ignoreras. Denna information finns i filen <filename
>Entries</filename
>. </para>
  </listitem>
</itemizedlist>

<para
>All denna möda är nödvändig eftersom &CVS; arbete är <emphasis
>katalogbaserat</emphasis
>. Eftersom &CVS; tidigare lagrade alla filer i ramverket <filename
>Mitt_program</filename
>, söker skriptet <filename
>buildcvs.sh</filename
> helt enkelt igenom alla kataloger och lägger till namnen på alla programfiler som det hittar i motsvarande fil <filename
>CVS/Entries</filename
>. </para>
<para
>Skriptet kör utan utmatning, och avslutas bara utan några fler rader i fönstret <guilabel
>Meddelanden</guilabel
>, när arbetet är klart. </para>

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

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

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