Bernd
Pol

# Komma igång: Programguiden

Arbete med att utveckla programvara i &kdevelop; organiseras i projekt. 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.

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.

## Nya projekt

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.

&kdevelop; tillhandahåller ett enkelt sätt att starta ett nytt programmeringsprojekt: programguiden. Du hittar programguiden via menyalternativet Projekt Nytt projekt.

Det behövs bara ett fåtal steg för att skapa ett nytt programmeringsprojekt med programguiden:

1. Välj programspråk du vill använda, och typ av program som du vill skapa från en uppsättning fördefinierade mallar.

2. Tillhandahåll en del allmän information som programnamn, katalog där programmet ska byggas, etc.

3. Bestäm om du vill använda ett versionskontrollsystem, som t.ex. CVS, och tillhandahåll nödvändig information som behövs.

4. Ställ in några mallar för ursprunglig deklarationsfil och källkodsfil (om nödvändigt).

5. Tala till sist om för programguiden att skapa alla nya saker, katalogstruktur, startmallar för deklarationsfiler och källkodsfiler, och hanteringsverktyg som ett startskelett för att bygga programmet, etc.

Voilà, det är allt. Programguiden har nu gett dig en första fungerade uppsättning programfiler, där du enkelt kan börja arbeta.

Låt oss nu ta en mer detaljerad titt på allt detta...

### Inledande steg

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

Inledande dialogruta för att skapa ett nytt projekt

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.

#### Välj programspråk och programtyp

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:

- Ada

- C

- C++

- Databas (SQL-projekt)

- Fortran

- Haskell

- Java

- PHP

- Pascal

- Perl

- Python

- Ruby

- Skal (Skript för skalet Bash)

För att precisera, innehåller katalogerna i själva verket inte riktiga programmeringsverktyg. De leder till fördefinierade mallar 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.

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 kort beskrivning 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 skärmbild av huvudfönstret som programmet visar.

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.

##### Välja ett projekthanteringssystem

Varje mall är kopplad till ett särskilt projekthanteringssystem. 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.

#### Ange allmän information

Den undre delen av sidan Allmänt i dialogrutan Skapa nytt projekt är ett inramat fält som heter Egenskaper. Du måste tillhandahålla en del allmän information om projektet här, så att programguiden vet hur den ursprungliga strukturen ska byggas.

##### Programnamn

Ditt program behöver förstås ett namn. Skriv in det i det övre fältet under Egenskaper, som heter Programnamn. Vi använder Mitt_program som exempel.

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:

- små och stora bokstäver

- siffror

- tecknet understreck

En framträdande orsak till begränsningen är att programguiden kommer att använda programnamnet som bas för vissa klassnamn 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.

##### Projektkatalogen

Den andra utmärkande orsaken för begränsningen ser du på nedersta raden i området Egenskaper. Den heter Slutgiltig plats, och visar katalogen där programguiden skapar programmet.

När du skriver in programmets namn märker du att programguiden repeterar det du skriver in längst ner på raden Slutgiltig plats, men bara med små bokstäver.

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 Nästa > inaktiv (grå). Den varnar dig också genom att lägga till (fil eller katalog finns redan) sist på raden Slutgiltig plats.

##### Startsökväg

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.

Det görs i den andra radens inmatningsfält under Egenskaper, som heter Plats. Det du skriver in här är överliggande sökväg 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 Slutgiltig plats för att bättre visa vad som händer.

Programguiden kopierar ett startvärde till fältet Plats från början. Det hämtas från det du har valt under fältet Standardprojektkatalog under den allmänna inställningen. I vårt fall har vi ställt in &kdevelop; att använda `/home/utveckling/projekt/` som ursprunglig sökväg för nya projekt.

Ändra innehållet i fältet Plats, så att utvecklingskatalogen för programmet som visas på raden Slutgiltig plats är unik.

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

##### Personlig information

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 Upphovsman, och en giltig e-postadress i fältet E-post, så att användare kan ge dig återmatning om programmet.

1. 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 Upphovsman och E-post under Skapa nytt projekt inte passar, bör du kontrollera e-postinställningarna i KDE:s inställningscentral.

2. 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 `main.cpp`.

3. Fältet E-post är det valfria 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.

##### Versions- och licensinformation

Skriv till sist in startversion för det nya programmet i fältet Version, och välj licensen du vill ska gälla för ditt program i kombinationsrutan Licens.

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 Skapa nytt projekt (se kapitlet Ange mallar för deklarationer och källkod nedan).

Om du valde Egen i kombinationsrutan Licens måste du själv tillhandahålla en licenstext.

Både version och licensinformation kommer också att infogas i startmallarna på ett lämpligt format som tillhandahålls av programtypen du väljer.

När du har skrivit in all den här informationen på ett riktigt sätt, tryck på knappen Nästa > för att fortsätta, som visas i följande kapitel.

### Ange information om versionssystem

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

Den här beskrivningen koncentreras endast på behoven för att skapa projekt. För mer information om &CVS;, se kapitlet Använda &CVS; nedan.

#### Inget versionskontrollsystem önskas

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

#### Använda &CVS;

Annars måste du välja versionskontrollsystemet som du vill använda i kombinationsrutan Versionskontrollsystem. Vi använder &cvs; 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.

Ställa in ett nytt projekt för CVS

Ett versionskontrollsystem som &CVS; (vilket betyder Concurrent Versions System) lagrar kopior av valda projektfiler i någon sorts databas. Om du använder &CVS;, kan du bland annat ladda upp (arkivera) filerna eller ladda ner dem till din projektkatalog (checka ut, eller uppdatera). 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.

#### &CVS;-rot

&CVS; måste hantera versionsdatabasen som det har med dina projektfiler. För att åstadkomma det har det en del speciell databasinformation i en egen katalog, som kallas &CVS;-roten. 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.

Lokal &CVS;-rot. Det finns två grundläggande möjligheter. Antingen vill du använda en lokal &CVS;-databas, eller använder du en databas som finns på en fjärrserver. 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 `cvsroot`. Det kan se ut på följande sätt:

``/home/utveckling/cvsroot`` (där `devel` helt enkelt anger användaren utveckling, bara som ett exempel)

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

Skriv in namnet på &CVS;-rotkatalogen som systemet har ställts in för i fältet CVS-rot. 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.

Initiera en ny &CVS;-rot. 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 Initiera rot under fältet CVS-rot.

Som sagt, beordrar 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 Initiera rot för en befintlig &CVS;-rotkatalog.

Fjärr &CVS;-rot. 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 CVS-rot. Om du till exempel vill komma åt &kde;:s &CVS;-server:

``:pserver:min_inloggning@cvs.kde.org:/home/kde`` (där min_inloggning anger inloggningsnamnet som är inställt i ditt &kde; &CVS;-konto)

#### Servertyper för fjärr-&CVS;

Det finns i huvudsak två fjärrservertyper för &CVS; med bred användning: pserver som använder ett lösenordssäkrat okrypterat protokoll, och ext-servern som använder krypterad dataöverföring via rsh eller ssh. De skiljs åt av webbadressprefixet de använder:

`:pserver:`

för den okrypterade typen lösenordsskyddad server, och

`:ext:`

för en servertyp krypterad med rsh eller ssh. Till exempel

``:ext:min_inloggning@cvs.cervisia.sourceforge.net:/cvsroot/cervisia``

kommer åt &CVS;-roten för det brett använda &CVS;-hanteringsverktyget Cervisia på servern SourceForge.

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 `rsh` eller `ssh` i fältet CVS_RSH på sidan Versionskontrollsystem i Skapa nytt projekt.

Det finns ett problem om du använder en krypterad server för &CVS; inne i &kdevelop;. Se kapitlet Använda &CVS; för detaljinformation.

#### &CVS;-arkivet

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 arkiv.

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.

Skriv bara in arkivnamnet som du vill använda i fältet CVS-arkiv på sidan Versionskontrollsystem under Skapa nytt projekt. I vårt exempel är det `Mitt_program`.

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

#### Återstående fält

Det återstår inte mycket arbete. Programguiden har redan ställt in återstående fält åt dig. Mer detaljerat:

Fältet Leverantörstagg används endast av kompatibilitetsskäl. Du kan behålla standardvärdet leverantör som programguiden skrivit in här.

Fältet Meddelande 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 nytt projekt som programguiden skrivit in.

Utgåvetagg innehåller namnet som används som tagg för det ursprungliga tillståndet för projektet. En sådan tagg 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 Använda &CVS;.)

Programguiden har skrivit in standardtaggen start här, som är ett värdigt förslag. Behåll det bara.

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 Meddelanden 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:

    * cd '/home/utveckling/test' && cvs -d '/home/utveckling/min_cvsrot' \
      import -m 'nytt projekt' '' 'leverantör' 'start' &&\
      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 ***

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 Nytt projekt i menyn Projekt.

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

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

### Ange mallar för deklarationer och källkod

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.

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.

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:

    /***************************************************************************
     *   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.             *
     ***************************************************************************/

Andra mallar tillhandahåller liknande information på ett format enligt definitionen av programspråket du vill använda.

Som du kanske märkt, har programhanteringen redan fyllt i viss information som du angav på den fösta sidan Allmänt i dialogrutan Skapa nytt projekt, närmare bestämt innehållet i fälten Upphovsman och E-post. Riktig licensinformation har också infogats, enligt ditt val i kombinationsrutan Licens.

#### Hur mallarna kan redigeras

Mallarna som du ställer in i dialogrutan Skapa nytt projekt 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.

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 Upphovsman, E-post och Licens i den ursprungliga malltexten.

Infoga filinformation från &doxygen;

  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:

      /**
       * \file $MODULE$.cpp
       * \brief (skriv en kort beskrivning här).
       **/

  Så fort du skapar en ny källkodsfil, ersätter &kdevelop; variabeln `$MODULE$` med namnet på den nyskapade filen. Om du till exempel skapar en ny C++ klass som heter `EnEnkelTest`, ser du följande rader i filen `enenkeltest.cpp`:

      /**
       * \file enenkeltest.cpp
       * \brief (skriv en kort beskrivning här).
       **/

  Du måste fortfarande tillhandahålla den korta beskrivningen efter nyckelordet \brief, men en del av jobbet har redan gjorts automatiskt åt dig.

Textfilen med licensen

  Som ett annat exempel skulle du kunna inkludera en explicit referens till licenstexten som du vill använda i mallen. Använd variabeln `$LICENSEFILE$` för detta, och lägg till exempel till följande rad:

      //   Se $LICENSEFILE$ för den fullständiga licenstexten.

  Programguiden ersätter `$LICENSEFILE$` med namnet på filen där den fullständiga licenstexten finns, nämligen:

      //   Se COPYING för den fullständiga licenstexten.

  för GPL-licensen, eller

      //   Se LICENSE.BSD för den fullständiga licenstexten.

  om du bestämmer dig för att använda BSD-licens för programmet.

  Det finns förstås fler variabler som &kdevelop; känner till. Se avsnittet Redigera mallarna i kapitlet Redigeringsverktyg för att hitta vad som är möjligt.

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.

### Bygg de ursprungliga projektfilerna

Nu är nästan allt klart. På den sista sidan i mallen, har knappen Nästa > ändrats så att den nu lyder Slutför.

Tänk efter innan du klickar på den! Du har fortfarande möjlighet att granska allting genom att använda knappen < Tillbaka 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å &CVS;-arkivet 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).

Om du någon gång inte vill att det nya projektet ska byggas, avbryt dialogrutan Skapa nytt projekt med knappen Avbryt. Klicka annars på Slutför, och se i fönstret Meddelanden hur programguiden skapar projektet.

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 Meddelanden 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.

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.)

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 `templates` i projektkatalogen. Några enkla kopieringsåtgärder räcker oftast.

Därefter är det lämpligt att du kompilerar det ursprungliga projektet 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.

Innan du kompilerar det nya projektet för första gången, ta en titt på Projekt Bygginställning. Om det finns tre alternativ som visas: default, optimized och debug, med debug markerat, behåll det för all del, eller använd optimized istället.

På grund av vissa begränsningar i den nuvarande inställningen av autoconf och automake, ska du under inga omständigheter bygga med inställningen default. Det förstör vissa interna kataloginställningar, och gör att `configure` klagar när du senare försöker använda det med bygginställningarna optimized eller debug.

(Det här gäller bara för dessa flervalsmöjligheter. Om programtypen du valde bara tillhandahåller bygginställningen default, ska du förstås använda den.)