<chapter id="applicationwizard">

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

<title
>Kom i gang&mdash;Programguiden</title>

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

<para
>Arbejdet med at udvikle programmel i &kdevelop; organiseres i <emphasis
>projekter</emphasis
>. Et sådant projekt holder alt sammen som hører til en fuldstændig programmeringsopgave: kildekodefiler, yderligere datafiler, alle håndteringsfunktioner som behøves som byggesystemet samt adgang til alle kontroller og yderligere værktøjer som behøves for at få programmet klart til at køre. </para>
<para
>At organisere udviklingsarbejdet i projekter tillader dig nemt at skifte mellem eksisterende globale opgaver. Dette er rigtigt bekvemt hvis du &eg; arbejder med flere programmer samtidigt, hvilket ofte er tilfældet. Bed &kdevelop; om at åbne projektet du vil arbejde med, og du kan fortsætte i miljøet præcis hvor du tidligere forlod det. </para>

<sect1 id="new-projects">
<title
>Nye projekter</title>

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

<para
>Så snart du vil starte et nyt programmeringsprojekt, behøver en hel del formelle indstillingsprocedurer at gøres. En startstruktur for mapper skal laves, nye deklarationsfiler og kildekodefiler skal laves, byggesystemet skal initieres, &etc; </para>
<para
>&kdevelop; sørger for en nem måde at starte et nyt programmeringsprojekt&mdash;<emphasis
>programguiden</emphasis
>. Du finder programguiden via menupunktet <menuchoice
><guimenu
>Projekt</guimenu
> <guimenuitem
>Nyt projekt</guimenuitem
></menuchoice
>. </para>
<para
>Det er kun et fåtal af skridt der er nødvendige for at oprette et nyt programmeringsprojekt med programguiden: </para>
<orderedlist>
  <listitem
><para
><link linkend="new-projects-start-type"
>Vælg programmeringssproget</link
> du vil bruge, og type af program som du vil oprette ud fra et sæt fordefinerede skabeloner. </para
></listitem>
  <listitem
><para
><link linkend="new-projects-start-general"
>Sørg for en del generel information</link
> såsom programnavn, mappe hvor programmet skal bygges, &etc; </para
></listitem>
  <listitem
><para
>Bestem om du vil bruge et <link linkend="new-projects-start-cvs"
>versionskontrolsystem</link
>, som &eg; CVS, og sørg for nødvendig information som behøves. </para
></listitem>
  <listitem
><para
>Indstil nogle skabeloner for <link linkend="new-projects-start-templates"
>oprindelig deklarationsfil og kildekodefil</link
> (om nødvendigt). </para
></listitem>
  <listitem
><para
>Bed tilsidst programguiden om at <link linkend="new-projects-start-build"
>oprette alle nye ting</link
>, mappestruktur, startskabeloner for deklarationsfiler og kildekodefiler, og håndteringsværktøj såsom &eg; et startskelet til at bygge programmet, &etc; </para
></listitem>
</orderedlist>
<para
>Voil&agrave;&mdash;det er alt. Programguiden har nu givet dig et første fungerende sæt programfiler, hvor du enkelt kan begynde at arbejde. </para>
<para
>Lad os nu tage et mere detaljeret kig på alt dette... </para>

<sect2 id="new-projects-start">
<title
>Indledende skridt</title>

<indexterm zone="new-projects-start">
  <primary
>dialog</primary>
  <secondary
>opret nyt projekt</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>projekt</primary>
  <secondary
>opret nyt projekt</secondary>
  <tertiary
>dialog</tertiary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>projekt</primary>
  <secondary
>skabeloner</secondary
></indexterm>
<indexterm zone="new-projects-start">
  <primary
>skabeloner</primary>
  <secondary
>projekt</secondary
></indexterm>

<para
>For at oprette et nyt projekt i &kdevelop;, vælges <guimenuitem
>Nyt projekt</guimenuitem
> i menuen <guimenu
>Projekt</guimenu
>. Du vil nu se guiden for at oprette nyt projekt, som vises nedenfor: </para>

<screenshot id="screenshot-newprojectwizard">
  <mediaobject>
    <imageobject>
      <imagedata fileref="createnewproject.png" format="PNG"/>
    </imageobject>
    <caption
><para
>Indledende dialog for at oprette et nyt projekt </para
></caption>
  </mediaobject>
</screenshot>

<para
>Som du kan se, er dialogen opdelt i en øvre og en nedre del. I den øverste del kan du bestemme dig for programmeringssprog og programtype. Den nederste del indeholder en del generel information. </para>

<sect3 id="new-projects-start-type">
<title
>Vælg programmeringssprog og programtype</title>

<indexterm zone="new-projects-start-type">
  <primary
>projekt</primary>
  <secondary
>programtype</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>projekt</primary>
  <secondary
>programmeringssprog</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>projekt</primary>
  <secondary
>sprog</secondary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>sprog</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>programmeringssprog</primary
></indexterm>
<indexterm zone="new-projects-start-type">
  <primary
>program</primary>
  <secondary
>type</secondary
></indexterm>

<para
>Du udfører dine valg på venstresiden længst oppe i dialogen. Når den kommer frem er der en liste med mapper, hver med navnet på et programmeringssprog, som for eksempel: </para>

<itemizedlist>
  <listitem
><para
>Ada <indexterm>
      <primary
>Ada</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C <indexterm>
      <primary
>C</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>C++ <indexterm>
      <primary
>C++</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Database (SQL-projekter) <indexterm>
      <primary
>SQL</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
    <indexterm>
      <primary
>Database</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Fortran <indexterm>
      <primary
>Fortran</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Haskell <indexterm>
      <primary
>Haskell</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Java <indexterm>
      <primary
>Java</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Pascal <indexterm>
      <primary
>Pascal</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Perl <indexterm>
      <primary
>Perl</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>PHP <indexterm>
      <primary
>PHP</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Python <indexterm>
      <primary
>Python</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Ruby <indexterm>
      <primary
>Ruby</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
  <listitem
><para
>Skal (scripter for Bash skallen) <indexterm>
      <primary
>Bash</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
    <indexterm>
      <primary
>skal</primary>
      <secondary
>nyt projekt</secondary
></indexterm>
  </para
></listitem>
</itemizedlist>

<para
>For at være præcis, indeholder mapperne i virkeligheden ikke rigtige programmeringsværktøjer. De fører til fordefinerede <emphasis
>skabeloner</emphasis
> som du kan bruge som udgangspunkt for udvikling i et sprog. For at få en idé om hvad der tilbydes, åbn kun en mappe af gangen. Der er en serie af undermapper i visse, men kun en eller flere enkle indgange i andre. Undermapperne du ser organiserer de tilgængelige skabeloner ifølge visse opgaver, de enkle indgange navngiver skabeloner som du kan vælge. </para>
<para
>Her kan vi ikke i detalje gå ind på hvilke opgaver hver skabelon sørger for, men det er nemt at finde ud af. Så snart du markerer en skabelonindgang, vises nogen information i feltet til højre. I det nederste felt ser du en <emphasis
>kort beskrivelse</emphasis
> om hvad skabelonen er beregnet til at gøre. I feltet ovenfor vises et billede, om tilgængelig, med hvordan programmet som skabelonen producerer ser ud hvis du kompilerer og kører den uden ændring. Oftest er det et <emphasis
>skærmaftryk</emphasis
> af hovedvinduet som programmet viser. </para>
<para
>Vælg skabelonen som bedst passer målene for dit program som startpunkt. Indtast derefter information om almene egenskaber i de nederste felter, som vises i næste kapitel. </para>

<formalpara>
<title
>Vælg et projekthåndteringssystem</title>
<para
>Hver skabelon er bundet til et bestemt <link linkend="makesystems"
>Projekt håndteringssystem</link
>. For øjeblikket er der ikke nogen måde frit at vælge et sådant projekthåndteringssystem. Du skal finde en skabelon som passer til dine behov eller ændre dit projekt ifølge et efter oprettelsen. </para>
</formalpara>

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

<sect3 id="new-projects-start-general">
<title
>Angiv almen information</title>

<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>egenskaber</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>egenskaber</primary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>program</primary>
  <secondary
>navn</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>navn</primary>
  <secondary
>program</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>mappe</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>mappe</primary>
  <secondary
>projekt</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>søgesti</primary>
  <secondary
>nyt projekt</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>forfatter</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>projekt</primary>
  <secondary
>e-post</secondary
></indexterm>
<indexterm zone="new-projects-start-general">
  <primary
>forfatter</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
>licens</primary
></indexterm>

<para
>Den nederste del af siden <guilabel
>Generelt</guilabel
> i dialogen <guilabel
>Opret nyt projekt</guilabel
> er et indrammet felt som hedder <guilabel
>Egenskaber</guilabel
>. Du skal sørge for en del almen information om projektet, så programguiden ved hvordan den oprindelige struktur skal bygges. </para>
<formalpara>
<title
>Programnavn</title>
<para
>Dit program behøver naturligvis et navn. Indtast det i det øverste felt under <guilabel
>Egenskaber</guilabel
>, som hedder <guilabel
>Programnavn</guilabel
>. Vi bruger <quote
>MyApp</quote
> som eksempel. </para>
</formalpara>
<para
>Når du gør det, mærker du at programguiden nægter at acceptere specialtegn af nogen slags. De eneste tegn som accepteres er: <itemizedlist>
  <listitem
><para
>små og store bogstaver</para
></listitem>
  <listitem
><para
>tal</para
></listitem>
  <listitem
><para
>tegnet understregning</para
></listitem>
</itemizedlist>
</para>
<para
>En fremtrædende grund til begrænsningen er at programguiden vil bruge programnavnet som <emphasis
>basis for visse klassenavn</emphasis
> som den laver når den opbygger projektet fra begyndelsen. Altså skal projektets navn følge reglerne for programsproget som bruges. </para>
<formalpara>
<title
>Projektmappen</title>
<para
>Den anden udmærkede grund for begrænsningen ser du på nederste linje i området <guilabel
>Egenskaber</guilabel
>. Den hedder <guilabel
>Endeligt sted</guilabel
>, og viser mappen hvor programguiden laver programmet. </para>
</formalpara>
<para
>Når du indskriver programmets navn mærker du at programguiden gentager det du indskriver længst nede på linjen <guilabel
>Endeligt sted</guilabel
>, men kun med små bogstaver. </para>
<para
>Altså skal du vælge  navnet på det nye program med forsigtighed. Hvis du ender med en mappe som allerede bruges, lader programguiden dig ikke fortsætte til næste skridt, ved at beholde knappen <guibutton
>Næste &gt;</guibutton
> inaktiv (grå). Den <emphasis
>advarer</emphasis
> dig også ved at tilføje <quote
>(fil eller mappe findes allerede)</quote
> sidst på linjen <guilabel
>Endeligt sted</guilabel
>. </para>

<formalpara>
<title
>Startsøgesti</title>
<para
>Der er to måder at vælge en anden søgesti til det nye program. En er at bruge et andet navn. Det er dog ikke altid muligt (&eg; laver du måske en ny udgave af et eksisterende program). Som et alternativ kan du vælge en anden søgesti til programmappen. </para>
</formalpara>
<para
>Det gøres i den anden linjes indtastningsfelt under <guilabel
>Egenskaber</guilabel
>, som hedder <guilabel
>Sted</guilabel
>. Det du skriver her er <emphasis
>startsøgestien</emphasis
> for det nye programs udviklingsmappe. Programguiden tilføjer  programnavnet sidst i søgestien når det nye projekt laves. Resultatet vises på linjen <guilabel
>Endeligt sted</guilabel
> for at bedre vise hvad der sker. </para>
<para
>Programguiden kopierer en <emphasis
>startværdi</emphasis
> til feltet <guilabel
>Sted</guilabel
> fra begyndelsen. Det hentes fra det du har valgt under feltet <guilabel
>Standardprojektmappe</guilabel
> under de <link linkend="setup-general"
>generelle indstillinger</link
>. I vores tilfælde har vi &kdevelop; sat op til at bruge <filename class="directory"
>/home/devel/projects/</filename
> som oprindelig sti for nye projekter. </para>
<para
>Ændr indholdet i feltet <guilabel
>Sted</guilabel
>, så udviklingsmappen for programmet som vises på linjen <guilabel
>Endeligt sted</guilabel
> er entydig. </para>

<note
><para
>Sørg for at søgestien du skriver ind i feltet <guilabel
>Sted</guilabel
> allerede findes. Ellers kommer du ikke til at kunne fortsætte til næste skridt. Programguiden <emphasis
>advarer</emphasis
> dig om søgestier som ikke findes, ved at tilføje <quote
>(ugyldig)</quote
> sidst på linjen <guilabel
>Endeligt sted</guilabel
>. </para
></note>

<formalpara>
<title
>Personlig information</title>
<para
>Felterne som følger er ikke så kritiske. Angiv blot dit navn (&ie; navnet på personen som er ansvarlig for programmet) i feltet <guilabel
>Forfatter</guilabel
>, og en gyldig e-post-adresse i feltet <guilabel
>E-post</guilabel
>, så brugere kan give dig tilbagemeldinger om programmet. </para>
</formalpara>

<note>
<orderedlist>
  <listitem
><para
>Programguiden udfylder feltet med standardværdier, som tages fra e-postindstillingerne i KDE's kontrolcenter. Hvis standardværdierne i felterne <guilabel
>Forfatter</guilabel
> og <guilabel
>E-post</guilabel
> under <guilabel
>Opret nyt projekt</guilabel
> ikke passer, bør du kontrollere e-postindstillingerne i KDE's kontrolcenter. </para
></listitem>
  <listitem
><para
>Programguiden sammenstiller informationen til en startprogramskabelon hvis  det er muligt. For KDE C++ programmer, finder du den for eksempel i begyndelsen af kildekodefilen <filename
>main.cpp</filename
>. </para
></listitem>
  <listitem
><para
>Feltet <guilabel
>E-post</guilabel
> er det <emphasis
>valgfrie</emphasis
> blandt felterne, hvilket skyldes at ikke alle udviklere har adgang til internettet. Du kan lade feltet være tomt, og fortsætte alligevel. </para
></listitem>
</orderedlist>
</note>

<formalpara>
<title
>Versions- og licensinformation</title>
<para
>Indskriv til sidst startversion for det nye program i feltet <guilabel
>Version</guilabel
>, og vælg licensen du vil skal gælde for dit program i dropned-feltet <guilabel
>Licens</guilabel
>. </para>
</formalpara>

<para
>Hvis du vælger en programtype hvor programguiden sørger for fælles kildekodetekstskabeloner (&eg; C/C++), bør du kigge på licensinformationsteksten på tredje side i dialogen <guilabel
>Opret nyt projekt</guilabel
> (se kapitlet <link linkend="new-projects-start-templates"
>Angiv skabeloner for deklarationer og kildekode</link
> nedenfor). </para>
<para
>Hvis du valgte <quote
>Egen</quote
> i dropned-feltet <guilabel
>Licens</guilabel
> skal du selv sørge for en licenstekst. </para>

<note
><para
>Både version og licensinformation vil også blive indsat i startskabelonerne i et passende format som programtypen du vælger tilbyder. </para
></note>

<para
>Når du har skrevet al denne informationen rigtigt ind, så tryk på knappen <guibutton
>Næste &gt;</guibutton
> for at fortsætte, som vist i følgende kapitel. </para>
</sect3
> <!-- new-projects-start-general -->

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

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

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

<para
>I det andet skridt, leder programguiden dig til siden <guilabel
>Versionskontrolsystem</guilabel
>, hvor du kan bestemme hvilket versionskontrolsystem du vil bruge. </para>

<note
><para
>Denne beskrivelse koncentreres kun om behovene for at oprette projekter. For mere information om CVS, se kapitlet <link linkend="cvs"
>Brug af CVS</link
> nedenfor. </para
></note>

<formalpara>
<title
>Intet versionskontrolsystem ønskes</title>
<para
>Fra begyndelsen er <quote
>Intet</quote
> valgt i dropned-feltet <guilabel
>Versionskontrolsystem</guilabel
>, og siden er i øvrigt tom. Hvis du ikke vil bruge et versionskontrolsystem, så klik blot på knappen <guibutton
>Næste </guibutton
> for at fortsætte. </para>
</formalpara>

<formalpara>
<title
>Brug af CVS</title>
<para
>Ellers skal du vælge versionskontrolsystemet som du vil bruge i dropned-feltet <guilabel
>Versionskontrolsystem</guilabel
>. For øjeblikket er kun <quote
>&cvs;</quote
> tilgængeligt. Hvis du vælger det, viser programguiden siden igen, men nu indeholder den et antal felter som du skal udfylde. </para>
</formalpara>

<screenshot id="screenshot-newproject-cvs">
  <mediaobject>
    <imageobject>
      <imagedata fileref="create-new-project-cvs.png" format="PNG"/>
    </imageobject>
    <caption
><para
>Indstil et nyt projekt for CVS </para
></caption>
  </mediaobject>
</screenshot>

<para
>Et versionskontrolsystem som &CVS; (hvilket betyder <quote
>Concurrent Versions System</quote
>) opbevarer kopier af udvalgte projektfiler i en slags database. Hvis du bruger &CVS;, kan du blandt andet overføre (<quote
>arkivere</quote
>) filerne eller tage dem ned til din projektmappe (<quote
>tjekke ud</quote
>, eller <quote
>opdatere</quote
>). Det særlige ved dette er at filerne i versionsdatabasen opbevares på en struktureret måde, hvilket gør at du altid kan gå tilbage til et tidligere udviklingstrin hvis du behøver det. &CVS; tillader også flere udviklere nemt at samarbejde i et stort projekt (såsom &kdevelop;), uden at forstyrre hinandens arbejde. </para>

<indexterm zone="new-projects-start-cvs-root">
  <primary
>CVS</primary>
  <secondary
>rod</secondary
></indexterm>
<indexterm zone="new-projects-start-cvs-root">
  <primary
>rod</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
>ekstern</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-rod</title>
<para
>&cvs; skal <emphasis
>håndtere</emphasis
> versionsdatabasen som den har fra dine projektfiler. For at opnå dette har den en del speciel databaseinformation i en egen mappe, som kaldes <emphasis
>&cvs;-roden</emphasis
>. Det første skridt for at indstille &cvs; for det nye projekt, er altså at fortælle &kdevelop; hvor roden findes. </para>
</formalpara>

<para
><emphasis
>Lokal &cvs;-rod.</emphasis
> Der er to grundlæggende muligheder. Enten vil du bruge en <emphasis
>lokal</emphasis
> CVS-database, eller du vil bruge en database som findes på en <emphasis
>fjernserver</emphasis
>. Hvis du udvikler på egen hånd, vil du måske bruge &cvs;-databasen som en slags sikkerhedskopieringssystem på din egen maskine. Oftest laves den i din hjemmemappe og gives navnet <filename
>cvsroot</filename
>. Det kan se ud på følgende måde: </para>
<para
><userinput
><filename class="directory"
>/home/udvikling/cvsroot</filename
></userinput
> (hvor <filename
>udvikling</filename
> simpelthen angiver brugeren <quote
>udvikling</quote
>, kun som et eksempel) </para>

<note
><para
>I virkeligheden er dette en forkortet form. Mere fuldstændigt skal den lokale &cvs;-rod adresseres med præfikset <computeroutput
>:local:</computeroutput
>. Den forkortede form tillades kun i tilfælde hvor filnavnet begynder med en skråstreg (<computeroutput
>/</computeroutput
>). Det fuldstændige navn på vor lokale &cvs;-rod i eksemplet ville se nøjagtigt ud som: <filename class="directory"
>:local:/home/udvikling/cvsroot</filename
>. </para
></note>

<para
>Indtast navnet på &cvs;-rodmappen som systemet har indstillet for i feltet <guilabel
>CVS-rod</guilabel
>. I princippet kan du vælge hvilket som helst navn, og til og med bruge flere &cvs;-databaser, men det er tilrådeligt at beholde &cvs;-roden når den først er blevet sat op. </para>
<para
><emphasis
>Initiér en ny &cvs;-rod</emphasis
>. Hvis der ikke er en&cvs;-root, endnu kan &kdevelop; indstille &CVS;-systemet til at oprette en for dig i den givne mappe. Markér blot afkrydsningsfeltet <guilabel
>Initiér rod</guilabel
> under feltet <guilabel
>CVS-rod</guilabel
>. </para>
<note
><para
>Som sagt, <emphasis
>beordrer</emphasis
> &kdevelop; kun &CVS;-systemet til at initiere en ny &cvs;-rod. Den gør ingenting selv med mappen. Heldigvis er &cvs; smart nok til at kontrollere om &cvs;-rodmappen allerede findes. Derfor gør det ingen skade hvis du skulle have markeret <guilabel
>Initiér rod</guilabel
> for en eksisterende &cvs;-rodmappe. </para
></note>

<para
><emphasis
>Ekstern &cvs;-rod.</emphasis
> Der er tilfælde hvor &cvs;-databasen skal være på en fjernserver, især når flere udviklere arbejder med samme projekt. Så skal du indtaste &cvs;-rodens URL for serveren i feltet <guilabel
>CVS-rod</guilabel
>. Hvis du for eksempel vil have adgang til &kde;'s &cvs;-server: </para>
<para
><userinput
><filename class="directory"
>:pserver:mit_brugernavn@cvs.kde.org:/home/kde</filename
></userinput
> (hvor <filename
>mit_brugernavn</filename
> angiver brugernavnet som er indstillet i din &kde; &cvs;-konto) </para>

<indexterm zone="new-projects-start-cvs-remote">
  <primary
>ekstern 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 for fjern-&cvs;</title>
<para
>Det er i hovedsagen to fjernservertyper for &cvs; med udbredt brug: <emphasis
>pserver</emphasis
> som bruger en kodeordssikret ukrypteret protokol, og <emphasis
>ext</emphasis
>-serveren som bruger krypteret dataoverførsel via rsh eller ssh. De adskilles af URL-præfikset de bruger: </para>
</formalpara>
<para>
<filename
>:pserver:</filename>
</para>
<para
>for den ukrypterede <quote
>kodeordsbeskyttede server</quote
> type, og </para>
<para>
<filename
>:ext:</filename>
</para>
<para
>for en servertype krypteret med rsh eller ssh. For eksempel </para>
<para>
<userinput
><filename class="directory"
>:ext:mylogin@cvs.sourceforge.net:/cvsroot/cervisia</filename
></userinput>
</para>
<para
>får adgang til &cvs;-roden for det bredt bruge &cvs;-håndteringsværktøj <application
>Cervisia</application
> på serveren SourceForge. </para>
<para
>Hvis du vil bruge en krypteret server via rsh eller ssh for adgang til &cvs;, skal du fortælle &kdevelop; hvilken krypteringsprotokol der skal bruges. Indskriv blot <userinput
>rsh</userinput
> eller <userinput
>ssh</userinput
> i feltet <guilabel
>CVS_RSH</guilabel
> på siden <guilabel
>Versionskontrolsystem</guilabel
> i <guilabel
>Opret nyt projekt</guilabel
>. </para>

<note
><para
>Der er et problem hvis du bruger en krypteret server for &cvs; inde i &kdevelop;. Se kapitlet <link linkend="cvs"
>Brug af CVS</link
> for detaljeret information. </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
>Hidtil har du fortalt &kdevelop; hvor &cvs;-roden er, som håndterer versionsdatabasen og hvordan du har adgang til den. Nu skal du fortælle &kdevelop; hvilket navn du ønsker at &CVS; skal bruge for at gemme dine projektfiler i databasen. Et sådant sted hvor projektfilerne opbevares i &cvs;, kaldes et <emphasis
>arkiv</emphasis
>. </para>
</formalpara>
<para
>I princippet kan du bruge et hvilket som helst navn for projektfilernes &cvs;-arkiv, så længe det opfylder specifikationerne for at navngive en fil. Oftest bruger de fleste udviklere alligevel selve programmets navn. &CVS; bygger en mappe med navnet under &cvs;-roden, derfor er det nemmere hvis du beholder programnavnet for det. </para>
<para
>Indskriv blot arkivnavnet som du vil bruge i feltet <guilabel
>CVS-arkiv</guilabel
> på siden <guilabel
>Versionskontrolsystem</guilabel
> under <guilabel
>Opret nyt projekt</guilabel
>. I vort eksempel er det <userinput
>Mit_nye_program</userinput
>. </para>

<warning
><para
><emphasis
>Sørg for ikke at bruge et arkiv som allerede findes!</emphasis
>. &CVS;-systemet advarer ikke om duplikerede filer, men smider alting ind som ikke producerer en formel konflikt. Du vil lave rod i alting! </para
></warning>

<formalpara>
<title
>Tilbageværende felter</title>
<para
>Der er ikke meget arbejde tilbage. Programguiden har allerede indstillet de øvrige felter for dig. Mere detaljeret: </para>
</formalpara>
<para
>Feltet <guilabel
>Leverandør</guilabel
> bruges kun af kompatibilitetsgrunde. Du kan beholde standardværdien <quote
>leverandør</quote
> som programguiden har skrevet her. </para>
<para
>Feltet <guilabel
>Meddelelse</guilabel
> gør det muligt at indtaste en kommentar om indholdet i &cvs; fra begyndelsen. Brug hvilken som helst tekst du vil, eller behold blot standardværdien <guilabel
>nyt projekt</guilabel
> som programguiden har skrevet ind. </para>
<para
><guilabel
>Udgavemærke</guilabel
> indeholder navnet som bruges som mærke for den oprindelige tilstand af projektet. Et sådant <emphasis
>mærke</emphasis
> navngiver en vis tilstand i &CVS;-arkivet, som du senere kan bruge til at komme tilbage til den tilstand for udviklingen. (Se videre i kapitlet <link linkend="cvs"
>Brug af  CVS</link
>.) </para>
<para
>Programguiden har indskrevet standardmærket <quote
>start</quote
> her, som er et værdigt forslag. Behold det blot. </para>

<note>
<para
>Hvis noget i al denne information om versionskontrol er forkert, mærker &kdevelop; det oftest ikke før end projektet laves. Det er &CVS;-systemet som finder fejlen når det forsøger at lave arkivet. Derfor skal du holde øje med vinduet <guilabel
>Meddelelser</guilabel
> i &kdevelop; når projektet laves i det sidste indstillingsskridt. Hvis der var nogen fejl med &CVS;, ser du oftest en fejlmeddelelse som denne: </para>

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

<para
>Hvis dette sker, skal du enten indstille &cvs; manuelt (det skal være lykkedes  for &kdevelop; at initiere dine projektfiler på dette tidspunkt) eller fjerne projektmappen og begynde forfra igen med <guimenuitem
>Nyt projekt</guimenuitem
> i menuen <guimenu
>Projekt</guimenu
>. </para>
</note>

<para
>Efter du har indtastet al information relateret til &CVS;, så klik på knappen <guibutton
>Næste &gt;</guibutton
> for at fortsætte. </para>

<note
><para
>Hvis du vil rette en fejl på foregående side i <guilabel
>Opret nyt projekt</guilabel
>, så tryk blot på knappen <guibutton
>&lt; Tilbage</guibutton
>. Programguiden husker dine indstillinger på nuværende side, så du kan nemt fortsætte når du kommer tilbage. </para
></note>

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

<sect2 id="new-projects-start-templates">
<title
>Angiv skabeloner for deklarationer og kildekode</title>

<para
>Næste skridt tager dig til en serie sider, hvor du kan indstille almindelig information som du vil inkludere i dine kildekode- og deklarationsfiler, hvis opgaven det drejer sig om tillader det. </para>
<para
>Både deklarationsskabeloner og kildekodeskabeloner sørges der for for C og C++ programmer, hver og sin egen side. For andre sprog er der måske kun kildekodeskabeloner. I visse tilfælde ser du til og med at skabelonsiden er tom. </para>
<para
>Hvis siden bruges, udfylder programguiden nogle almindelige kommentarer i sidehovedet, som kan se sådan her ud for et C++ baseret program: </para>

<screen
><computeroutput
><literal>
/***************************************************************************
 *   Copyright (C) 2003 by Dit navn                                       *
 *   dig@dig.dk                                                           *
 *                                                                         *
 *   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
>Andre skabeloner sørger for lignende information på et format ifølge definitionen af programmeringssproget du vil bruge. </para>
<para
>Som du måske har bemærket, har programhåndteringen allerede udfyldt noget information som du angav på den første side <guilabel
>Generelt</guilabel
> i dialogen <guilabel
>Opret nyt projekt</guilabel
>, nærmere bestemt indholdet i felterne <guilabel
>Forfatter</guilabel
> og <guilabel
>E-post</guilabel
>. Rigtig licensinformation er også indsat, følgende dit valg i dropned-feltet <guilabel
>Licens</guilabel
>. </para>

<sect3 id="new-projects-start-templates-edit">
<title
>Hvordan skabelonerne kan redigeres</title>

<indexterm zone="new-projects-start-templates-edit">
  <primary
>skabeloner</primary>
  <secondary
>projekt</secondary>
  <tertiary
>redigér</tertiary
></indexterm>
<indexterm zone="new-projects-start-templates-edit">
  <primary
>projekt</primary>
  <secondary
>skabeloner</secondary>
  <tertiary
>redigér</tertiary
></indexterm>

<para
>Skabelonerne som du indstiller i dialogen <guilabel
>Opret nyt projekt</guilabel
> behandles hver gang du beder &kdevelop; om at oprette en ny kildekodefil og/eller deklarationsfil. Informationen som du angiver her, inkluderes længst oppe i et dokumentationshovede, inden koden begynder. </para>
<para
>Du er dog ikke begrænset til ren tekst. &kdevelop; kender til flere variabler, som lader dig inkludere rigtig information i filen. Programguiden bruger i virkeligheden blot nogle sådanne variabler for at inkludere information om <guilabel
>Forfatter</guilabel
>, <guilabel
>E-post</guilabel
> og <guilabel
>Licens</guilabel
> i den oprindelige skabelonteksten. </para>

<formalpara>
<title
>Indsæt filinformation fra &doxygen;</title>
<para
>Hvis du for eksempel ønsker at dokumentationen af programgrænsefladen som &doxygen; laver, skal vise yderligere information om filens indhold i listen med filnavne, kan du tilføje følgende linjer til kildekodefilens skabelon: </para>
</formalpara
><screen
><computeroutput
><literal>
/**
 * \file $MODULE$.cpp
 * \brief (skriv en kort beskrivelse her).
 **/
</literal
></computeroutput
></screen>
<para
>Så snart du laver en ny kildekodefil, erstatter &kdevelop; variablen <computeroutput
>$MODULE$</computeroutput
> med navnet på den nyoprettede fil. Hvis du for eksempel laver en ny C++ klasse som hedder <classname
>EnEnkelTest</classname
>, ser du følgende linjer i filen <filename
>enenkeltest.cpp</filename
>: </para>
<screen
><computeroutput
><literal>
/**
 * \file enenkeltest.cpp
 * \brief (skriv en kort beskrivelse her).
 **/
</literal
></computeroutput
></screen>
<para
>Du skal stadigvæk sørge for den korte beskrivelse efter nøgleordet <quote
>\brief</quote
>, men en del af jobbet er allerede gjort automatisk for dig. </para>
<formalpara>
<title
>Tekstfilen med licensen</title>
<para
>Som et andet eksempel kunne du inkludere en eksplicit reference til licensteksten som du vil bruge i skabelonen. Brug variablen <computeroutput
>$LICENSEFILE$</computeroutput
> til dette, og tilføj for eksempel følgende linje: </para>
</formalpara>
<screen
><computeroutput
><literal>
//   Se $LICENSEFILE$ for den fuldstændige licenstekst.
</literal
></computeroutput
></screen>
<para
>Programguiden erstatter <computeroutput
>$LICENSEFILE$</computeroutput
> med navnet på filen hvor den fuldstændige licenstekst findes, nemlig: </para>
<screen
><computeroutput
><literal>
//   Se COPYING for den fuldstændige licenstekst.
</literal
></computeroutput
></screen>
<para
>for GPL-licensen, eller </para>
<screen
><computeroutput
><literal>
//   Se LICENSE.BSD for den fuldstændige licenstekst.
</literal
></computeroutput
></screen>
<para
>hvis du bestemmer dig for at bruge BSD-licensen for programmet. </para>
<para
>Der er naturligvis flere variabler som &kdevelop; kender til. Se afsnittet <link linkend="newfiles-edittemplates"
>Redigér skabelonerne</link
> i kapitlet <link linkend="editing"
>Redigeringsværktøjer</link
> for at finde ud af hvad der er muligt. </para>

<note
><para
>Skabelonerne som du definerer her får ingen virkning førend programguiden har lavet det nye projekt. Du finder informationen længst oppe i filerne som du selv laver under udviklingsprocessen. Når de oprindelige filer laves, bruger programguiden nogle fordefinerede standardskabeloner. Du skal indstille de oprindelige filer til dine behov manuelt. </para
></note>

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

<sect2 id="new-projects-start-build">
<title
>Byg de oprindelige projektfiler</title>

<indexterm zone="new-projects-start-build">
  <primary
>projekt</primary>
  <secondary
>ny</secondary>
  <tertiary
>byg</tertiary
></indexterm>
<indexterm zone="new-projects-start-build">
  <primary
>projekt</primary>
  <secondary
>oprindelig bygning</secondary
></indexterm>

<para
>Nu er næsten alt klart. På den sidste side i skabelonen, er knappen <guibutton
>Næste &gt;</guibutton
> ændret så den nu lyder <guibutton
>Afslut</guibutton
>. </para>
<para
><emphasis
>Tænk dig om to gange inden du klikker på den!</emphasis
> Du har stadigvæk mulighed for at undersøge alting ved at bruge knappen <guibutton
>&lt; Tilbage</guibutton
> gentagne gange. Eftersom programguiden husker al information du hidtil har indtastet, kan det være passende at tage sig tid til at kigge tilbage en gang til. Hvis du bruger lokal CVS, så glem ikke at kontrollere navnet på <emphasis
>CVS-arkivet</emphasis
> igen (der skal ikke allerede findes nogen undermappe med det navn i CVS-rodmappen&mdash;hvis der gør det, så forsøg med et andet arkivnavn). </para>
<para
>Hvis du nogensinde ikke ønsker at det nye projekt skal bygges, så afbryd dialogen <guilabel
>Opret nyt projekt</guilabel
> med knappen <guibutton
>Afbryd</guibutton
>. Klik ellers på <guibutton
>Afslut</guibutton
>, og se i vinduet <guilabel
>Meddelelser</guilabel
> hvordan programguiden laver projektet. </para>
<para
>Hvis du vil bruge et versionshåndteringssystem (&CVS;), sker det i virkeligheden i to kørsler. Programguiden bygger først projektmapperne og kalder siden &CVS;-programmet som starter vinduet <guilabel
>Meddelelser</guilabel
> med sit eget indhold. Hvis nogen fejl opstår i en af kørslerne, stopper processen og viser dig en tilsvarende fejlmeddelelse i vinduet. </para>

<note
><para
>I mange tilfælde når dit nye projekt er blevet sat op på denne måde, vil &kdevelop; automatisk indlæse kildefiler for en eller flere af de basalt vigtige moduler så du kan begynde at arbejde med det samme. (Hvilke kildemoduler vil blive vist&mdash;hvis der er nogen&mdash;det afhænger imidlertid af den skabelon der blev valgt oprindeligt i programguiden.) </para
></note>

<para
>Glem ikke at kontrollere hvad programguiden sørger for fra begyndelsen. Du vil måske for eksempel ændre den oprindelige information i filhovederne ifølge dine egne skabeloner. Oftest finder du dem i undermappen <filename class="directory"
>templates</filename
> i projektmappen. Nogle enkle kopieringshandlinger er oftest utilstrækkeligt. </para>
<para
>Derefter er det tilrådeligt at du <emphasis
>kompilerer det oprindelige projekt</emphasis
> inden du forsøger at ændre noget kode. I de fleste tilfælde skulle denne første kompilering være mulig. På den måde kan du afgøre om projektet virkelig blev oprettet ifølge dine behov. Hvis det ikke gjorde det, så tag helt enkelt projektmappen væk (også i den lokale &CVS;-rod, hvis du bruger en) og begynde forfra. </para>

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

  <indexterm zone="defaultbuild-warning">
    <primary
>standard-byggeindstilling</primary>
    <secondary
>advarsel</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>byggeindstillinger</primary>
    <secondary
>advarsel om standard-byggeindstilling</secondary
></indexterm>
  <indexterm zone="defaultbuild-warning">
    <primary
>advarsel</primary>
    <secondary
>standard-byggeindstilling</secondary
></indexterm>

  <para
>Inden du kompilerer det nye projekt første gang, kig så på <menuchoice
><guimenu
>Projekt</guimenu
> <guimenuitem
>Byggeindstilling</guimenuitem
></menuchoice
>. Hvis der er tre valgmuligheder som vises: <guimenuitem
>default</guimenuitem
>, <guimenuitem
>optimized</guimenuitem
> og <guimenuitem
>debug</guimenuitem
>, med <guimenuitem
>debug</guimenuitem
> markeret, så behold det endelig, eller brug <guimenuitem
>optimized</guimenuitem
> i stedet for. </para>
  <para
>På grund af visse begrænsninger i den nuværende indstilling af autoconf og automake, skal du <emphasis
>under ingen omstændigheder</emphasis
> bygge med indstillingen <guimenuitem
>default</guimenuitem
>. Det forstyrrer visse interne mappeindstillinger, og gør at <command
>configure</command
> klager når du senere forsøger at bruge den med byggeindstillingerne <guimenuitem
>optimized</guimenuitem
> eller <guimenuitem
>debug</guimenuitem
>. </para>
  <para
>(Dette gælder kun for disse flervalgsmuligheder. Hvis programtypen du valgte kun sørger for byggeindstillingen <guimenuitem
>default</guimenuitem
>, skal du naturligvis bruge den.) </para>
</warning>

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

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

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

<sect1 id="applicationwizard-behind">
<title
>Bagved scenen</title>

<indexterm zone="applicationwizard-behind">
  <primary
>projekt</primary>
  <secondary
>ny</secondary>
  <tertiary
>byg</tertiary
></indexterm>
<indexterm zone="applicationwizard-behind">
  <primary
>CVS</primary>
  <secondary
>nyt projekt</secondary>
  <tertiary
>byg</tertiary
></indexterm>

<para
>Det er altid tilrådeligt at kigge på udskrevne meddelelser og forsøge at forstå hvad der er sket. I det mindste i princippet bør du vide hvad som skal gøres når programguiden laver det nye projekt. Vi kan ikke gå ind på detaljer, men giver en oversigt over disse meddelelser for at få en ide om hvad der skete bag scenen. </para>

<tip>
<para
>Hvis projektet blev indstillet til lokal &CVS;, fik du to sæt af meddelelser, hvor det første sæt forsvandt inden du kunne læse dem ordentligt, eftersom &CVS; bruger vinduet <guilabel
>Meddelelser</guilabel
> til sine egne formål. Så vi indfangede begge serier i separate kørsler&mdash;oprettede programmet to gange, en gang uden &CVS;, tog mappen væk og begyndte forfra, denne gang med indstilling af programmet med &CVS;. </para>
<para
>Du bør følge samme procedure hvis der skete noget mærkeligt, og du ikke kunne fange meddelelser fra det første indstillingstrin. </para>
</tip>
<para
>Vi tager et kig på udskriften under <guilabel
>Meddelelser</guilabel
> for begge skridt: <itemizedlist>
  <listitem
><para
><link linkend="applicationwizard-behind-app"
>Opsætning af programmet</link
> samt </para
></listitem>
  <listitem
><para
><link linkend="applicationwizard-behind-cvs"
>Opsætning af &CVS;</link
>. </para
></listitem>
</itemizedlist>
</para>

<sect2 id="applicationwizard-behind-app">
<title
>Opsætning af programmet</title>

<indexterm zone="applicationwizard-behind-app">
  <primary
>Perl</primary>
  <secondary
>nyt 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
>Hvis du indstillede <quote
>Mit_nye_program</quote
> som i det foregående eksempel, skal programguiden have udskrevet følgende meddelelser (vi omarrangerede udskriften en del for øget læsbarhed, og du kan klikke på en hvilken som helst linje for at gå til beskrivelsen af den): </para>
<screen
><computeroutput>
* <link linkend="applicationwizard-behind-app-perl"
>perl</link
> /opt/kde3/share/apps/kdevappwizard/template-kapp/script \
  --author='Dit navn' \
  --email='dig@dig.dk' \
  --version='0.1' \
  --appname='MyApp' \
  --dest='/home/devel/projects/myapp' \
  --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
>Et kaldet &perl;-script</title>
<para
>Som du ser på første linje, oprettede programguiden et kald til et &perl;-program fra indstillingerne som du lavede i dialogen <guilabel
>Opret nyt projekt</guilabel
>. Det kaldte script <filename
>script</filename
> findes i en mappe som bestemmes af typen af programskabelon du valgte i den øverste del på siden <guilabel
>Generelt</guilabel
> i dialogen <guilabel
>Opret nyt projekt</guilabel
>. </para>
</formalpara>
<para
>I vort tilfælde findes filen <filename
>script</filename
> i mappen <filename class="directory"
>/opt/kde3/share/apps/kdevappwizard/template-kapp/</filename
>. Erstat blot <filename class="directory"
>/opt/kde3/</filename
> med &kde;-mappen på dit system. </para>
<para
>Dette &perl;-script <filename
>script</filename
> kaldes med en serie af kommandolinjeflag, alle markerede med præfikset <quote
><computeroutput
>--</computeroutput
></quote
>, hvor programguiden placerer information fra de øvrig valg du lavede i dialogen <guilabel
>Opret nyt projekt</guilabel
>. </para>
<para
>Den nøjagtige serie af initieringsskridt afhænger af hvilket &perl;-script <filename
>script</filename
> som blev kaldt. Hvis du vil kontrollere dette, så kig blot i filen <filename
>script</filename
> som blev kaldet af kommandoen <computeroutput
>perl</computeroutput
> på første linje i vinduet <guilabel
>Meddelelser</guilabel
>. </para>
<note
><para
>Indstillingsscripterne bruger et antal subrutiner i &perl; samlede i filen <filename
>kdevelop.pm</filename
>, som du finder i undermappen <filename class="directory"
>share/apps/kdevwizard/template-common/</filename
> i din &kde;-installation. </para
></note>

<formalpara id="applicationwizard-behind-app-base">
<title
>Programmets basismappe</title>
<para
>Når &perl;-scriptet køres, får du en serie af meddelelser om hvad som <emphasis
>skal gøres</emphasis
> i næste installationsskridt. Først laves en <computeroutput
>målmappe</computeroutput
>. Det er programmets basismappe, præcis det som blev vist på linjen <guilabel
>Endeligt sted</guilabel
> på siden <guilabel
>Generelt</guilabel
> i dialogen <guilabel
>Opret nyt projekt</guilabel
>. Scriptet bruger værdien på flaget <computeroutput
>--dest</computeroutput
> i &perl;-kommandoen ovenfor. </para>
</formalpara>

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

<formalpara id="applicationwizard-behind-app-templates">
<title
>Filskabelonerne</title>
<para
>I næste skridt kopieres filskabelonerne du indstillede dialogen <guilabel
>Opret nyt projekt</guilabel
> til undermappen <filename class="directory"
>templates</filename
> i denne målmappe. Som du kan se ud fra flaget <computeroutput
>--filetemplates</computeroutput
> angives skabelonerne i par&mdash;suffikset de bruges for først, fulgt af navnet på den midlertidige fil hvortil din projektguide har kopieret indholdet i dialogens skabelonsider. Suffikser bruges som filnavne på hvor skabelonteksterne opbevares. </para>
</formalpara>
<para
>I vort eksempel, installeredes to sådanne skabelonfiler, nemlig <filename
>templates/h</filename
> for C++ deklarationsfiler og <filename
>templates/cpp</filename
> for C++ kildekodefiler. </para>

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

<formalpara id="applicationwizard-behind-app-license">
<title
>Licensfilen</title>
<para
>På siden <guilabel
>Generelt</guilabel
> i dialogen <guilabel
>Opret nyt projekt</guilabel
>, valgte du licensen som du vil skal gælde for programmet. Programguiden udfører to handlinger baseret på dette. En er licensinformationen som den blev skrevet i skabelonerne. Den anden handling gør at tilsvarende licensfil kopieres til programmets basismappe. </para>
</formalpara>
<para
>Parameteren <computeroutput
>--licensefile</computeroutput
> fortæller &perl;-scriptet <filename
>script</filename
> hvilken licenstekstfil der skal kopieres. I vort eksempel kommer filen <filename
>/home/udvikling/mit_nye_program/COPYING</filename
> til at blive installeret. </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
>Administrationsmappen</title>
<para
>&kdevelop; behøver et sæt filer for at administrere projektet. De lægges i undermappen <filename class="directory"
>admin</filename
> i dit programs basismappe. </para>
</formalpara>
<para
>Programguiden laver undermappen <filename class="directory"
>admin</filename
> i dette skridt, og udtrækker et standardsæt filer som behøves fra det komprimerede arkiv <filename
>share/apps/kdevappwizard/template-common/admin.tar.gz</filename
> i din &kde;-mappe. </para>
<note
><para
>&kdevelop; bruger altid samme sæt standardfiler til administrative formål. Derfor behøves ingen parameter i kaldet til &perl;-scriptet <filename
>script</filename
> for at lave undermappen <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
>Der er flere standardfiler som skal distribueres med alle programmer som følger &GNU;'s kodningsstandard. &perl;-scriptet <filename
>script</filename
> henter disse filer fra det komprimerede arkiv <filename
>share/apps/kdevappwizard/template-common/gnu.tar.gz</filename
> i &kde;'s installationsmappe, og indstiller dem ifølge informationen som du angav i dialogen <guilabel
>Opret nyt projekt</guilabel
>. </para>
</formalpara>
<para
>Efter dette skridt finder du følgende filer i programmets basismappe: <itemizedlist>
  <listitem
><para
><filename
>AUTHORS</filename
>, som fra begyndelsen indeholder information fra flagene <computeroutput
>--author</computeroutput
> og <computeroutput
>--email</computeroutput
>. </para
></listitem>
  <listitem
><para
><filename
>COPYING</filename
>, dette er den generelle &GNU;-licens, som alle programmer som følger &GNU; skal indeholde&mdash;også selvom du bestemmer at dit program skal have en anden licens. </para
></listitem>
  <listitem
><para
><filename
>ChangeLog</filename
>, er tom i begyndelsen&mdash;du bør protokolføre alle større ændringer her. </para
></listitem>
  <listitem
><para
><filename
>INSTALL</filename
> indeholder generelle installationsinstruktioner&mdash;ændr dette hvis særlig forsigtighed eller særlige procedurer er nødvendige for at installere programmet. </para
></listitem>
  <listitem
><para
><filename
>README</filename
>, er tom i begyndelsen&mdash;indtast al information som brugeren bør kende til inden programmet installeres. </para
></listitem>
  <listitem
><para
><filename
>TODO</filename
>, er tom i begyndelsen&mdash;indtast information om hvad der skal gøres for at udvikle programmet yderligere her. Du kan bruge dette som et notesblok til eget formål, men det er desuden til stor hjælp for offentligheden når programmet er publiceret. </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 oprindelige programdokumentation</title>
<para
>Alle projekter du laver, vil indeholde en oprindelig <emphasis
>DocBook</emphasis
>-skabelon, som du kan bruge når du begynder at skrive programdokumentationen. I dette skridt har &perl;-scriptet <filename
>script</filename
> oprettet undermapperne <filename class="directory"
>doc</filename
> og <filename class="directory"
>doc/en</filename
> i programmets basismappe med den oprindelige skabelon <filename
>doc/en/index.docbook</filename
> og nogle &automake; <filename
>Makefile.am</filename
> filer, som &kdevelop; senere kan bruge til at bygge hjælpesystemfiler. </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
>Hidtil er det meste af det globale blevet sat op, det som mere eller mindre findes i alle &kdevelop;-projekter. Med dette skridt begynder den mere programspecifikke indstillingsproces. Den kan variere afhængig ad programtypen du valgte. Kig på det egentlige &perl;-script <filename
>script</filename
> som programguiden kaldte for dig for at oprette det nye program, hvis du vil kigge på detaljerne. Vi fortsætter med at følge skridtene i eksemplet på listen ovenfor. </para>
</formalpara>
<para
>I det første af disse skridt, kopieres <emphasis
>projekthåndteringsfilen i &kdevelop;</emphasis
> fra skabelonmappen, hvor &perl;-scriptet <filename
>script</filename
> findes. I vores tilfælde kopieredes filen <filename
>share/apps/kdevappwizard/template-kapp/app.kdevelop</filename
> til programmets basismappe og indrettes ifølge de valg som blev gjort i dialogen <guilabel
>Opret nyt projekt</guilabel
>. </para>

<note
><para
>Du vil måske kigge i den resulterende projektfil, som i vores tilfælde blev gemt som <filename
>/home/devel/projects/myapp/myapp.kdevelop</filename
>. Den er skrevet i XML-format, og kan nemt vises med <application
>Kate</application
> eller en anden teksteditor. Men vær forsigtig så ingenting ændres, eftersom &kdevelop; er afhængig af indholdet. </para
></note>

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

<formalpara id="applicationwizard-behind-app-framework">
<title
>Programskelettet</title>
<para
>Nu er det på høje tid at mappestrukturen og andre vedligeholdelsesfiler laves, til at lægge det nye program i og gøre det muligt at vedligeholde det. Et såkaldt <emphasis
>programskelet</emphasis
> laves i dette skridt. Dets struktur afhænger basalt set af programtypen som du valgte i dialogen <emphasis
>Opret nyt projekt</emphasis
>, men dele af det er almindelige nok til også at findes i andre projekter. </para>
</formalpara>
<para
>I vort tilfælde er følgende mappestruktur blevet lavet i programmets basismappe <filename class="directory"
>/home/udevel/projects/myapp</filename
>. <itemizedlist>
  <listitem
><para
>Undermappen <filename
>src</filename
> er beregnet til at indeholde programmets kildekodefiler. </para
></listitem>
  <listitem
><para
>Undermappen <filename
>debug</filename
> indeholder den kompilerede udskrift fra <emphasis
>byggeindstillingen for <quote
>fejlsøgning</quote
></emphasis
>. (Se kapitlet <link linkend="buildconfigurations"
>Byggeindstillinger</link
> for at lære dig mere om dette.) Som navnet angiver, skal du bruge denne mappe til fejlsøgningsformål. </para
></listitem>
  <listitem
><para
>Undermappen <filename
>optimized</filename
> indeholder den kompilerede udskrift fra den <emphasis
><quote
>optimerede</quote
> byggeindstilling</emphasis
>. Du bør teste en optimeret udgave af programmet derfra. </para
></listitem>
  <listitem
><para
>Undermappen <filename
>po</filename
> er beregnet til <emphasis
>oversættelsesformål</emphasis
>. Den vil indeholde filer som kaldes <quote
>Portable Object</quote
> (<filename
>.po</filename
>-filer) og skabeloner (<filename
>.pot</filename
>-filer), som behandles af et oversættelsesprogram, som &eg; <application
>Kbabel</application
>. </para
></listitem>
</itemizedlist>
</para>
<para
>Alle disse mapper forbliver ikke tomme, men fyldes op med en række af <filename
>Makefile</filename
> og andre filer som &kdevelop; bruger til  at behandle programmets kildekode. Nogle oprindelige ikoner for det nye program er også placeret i undermappen <filename
>src</filename
>, om nødvendigt. I vort tilfælde finder du to stykker: <filename
>src/hi16-app-myapp.png</filename
> og <filename
>src/hi32-app-myapp.png</filename
> som begge indeholder almindelige &kde;-programikoner. </para>

<formalpara id="applicationwizard-behind-app-sources">
<title
>Installeret programkildekode</title>
<para
>Skelettet vil til sidst blive brugt til at tilføje <emphasis
>oprindelige kildekodefiler</emphasis
> for det nye projekt i mappen <filename class="directory"
>src</filename
>. De egentlige filer afhænger helt og holdent af programtypen du valgte i dialogen <guilabel
>Opret nyt projekt</guilabel
>. Du ser dem snart selv, eftersom det er her  det du virkelig skal arbejde med er. </para>
</formalpara>

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

<sect2 id="applicationwizard-behind-cvs">
<title
>Opsætning af &CVS;</title>

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

<para
>Lad os nu tage et kig det vinduet <guilabel
>Meddelelser</guilabel
> indeholder når programguiden fortsætter med at bygge vort projekteksempel. Hvis ingen fejl opstod under første gennemgang, vil indholdet i <guilabel
>Meddelelser</guilabel
> gå tilbage til at oprette det lokale &cvs;-arkiv. </para>
<para
>Som tidligere omformaterede vi de udskrevne linjer en lille smule for øget læsbarhed. Vi tog også nogle unødvendige linjer væk (der hvor punkterne <quote
>. . .</quote
> er). </para>

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

<para
>Som du ser fra den første meddelelselinje, oprettede programguiden en ny skalkommandolinje som styrer arbejdet som &cvs; skal gøre. Først går skallen til den nyoprettede basismappen for programmet, for at bruge den som standardmappe for de følgende skridt. </para>

<formalpara>
<title
>Bygning af &CVS;-arkivet</title>
<para
>På den anden del af kommandolinjen, kaldes &CVS;-programmet for at <emphasis
>importere</emphasis
> det oprindelige projektindhold til det ønskede arkivet. Igen styres arbejdet i detalje af et antal kommandolinjeflag i kaldet til &CVS;-programmet. </para>
</formalpara>
<itemizedlist>
  <listitem
><para
><computeroutput
>-d '/home/udvikling/cvsroot'</computeroutput
>&mdash;flaget <computeroutput
>-d</computeroutput
> fortæller &CVS; hvilken rodmappe der skal bruges. I vort tilfælde er det den <emphasis
>lokale &cvs;-rod</emphasis
> som findes i <filename class="directory"
>/home/udvikling/cvsroot</filename
>. </para
></listitem>
  <listitem
><para
><computeroutput
>import</computeroutput
>&mdash;fortæller &CVS;-programmet hvilken handling der skal udføres med roden. Vi vil <emphasis
>importere</emphasis
> filer til &cvs;-databasen. For at opnå dette, skal kommandoen <computeroutput
>import</computeroutput
> have nogle egne flag: <itemizedlist>
      <listitem
><para
><computeroutput
>-m 'nyt projekt'</computeroutput
>&mdash;flaget <computeroutput
>-m</computeroutput
> giver en <emphasis
>meddelelsestekst</emphasis
> til import for handlingen. Den vil blive opbevaret i databasen, og kan senere hentes for at identificere data som blev beholdt i dette skridt. I vort tilfælde angiver <quote
><computeroutput
>nyt projekt</computeroutput
></quote
> at vi arkiverer vore første filer i databasen. </para
></listitem>
      <listitem
><para
><computeroutput
>'Mit_nye_program'</computeroutput
>&mdash;det andet flag fortæller &CVS; hvilket <emphasis
>arkiv</emphasis
> der skal bruges. Hvis det ikke findes, laves det inden filimporthandlingerne. i dette tilfælde laves arkivet <filename
>Mit_nye_program</filename
>. </para
></listitem>
      <listitem
><para
><computeroutput
>'leverandør'</computeroutput
>&mdash;det følgende flag er et <emphasis
>mærke</emphasis
>, et symbolsk navn som markerer en række filer i mappen. Der er flere betydninger et sådant mærke kan have (se <link linkend="cvs"
>Brug af CVS</link
> for mere information). Dette markerer i princippet hele gruppen med filer som nogensinde bliver opbevaret i dette arkiv i fremtiden. Det er ikke af nogen særlig nytte for os, så <quote
><computeroutput
>leverandør</computeroutput
></quote
> er et ligeså godt navn som noget andet. </para
></listitem>
      <listitem
><para
><computeroutput
>'start'</computeroutput
>&mdash;er et andet mærke. Det markerer <emphasis
>udgaven</emphasis
>, med enkle ord en følge af senere gemte filer som hører sammen. Vi bruger <quote
><computeroutput
>start</computeroutput
></quote
> her, en beskrivelse som passer med brugen af denne oprindelige serie. </para
></listitem>
    </itemizedlist>
  </para
></listitem>
</itemizedlist>

<formalpara>
<title
>De importerede filer</title>
<para
>&CVS;-programmet laver arkivet, og begynder derefter at importere alle filer fra mappen <filename class="directory"
>/home/udvikling/mit_nye_projekt</filename
>. Det rapporterer derefter alle filer som hentes&mdash;det er indholdet i en hel mængde linjer med <quote
><computeroutput
>N</computeroutput
></quote
> som følger i vinduet <guilabel
>Meddelelser</guilabel
>. Bogstavet <computeroutput
>N</computeroutput
> angiver at filen er ny og blev importeret til arkivet. </para>
</formalpara>
<para
>Afhængig af det nye programs type er der en hel del af linjerne med <quote
><computeroutput
>N</computeroutput
></quote
>. Vi afkortede udskriften, for kun at vise den første og de tre sidste linjer som et eksempel. </para>

<formalpara>
<title
>Meddelelsen at &CVS; lykkedes</title>
<para
>&CVS; rapporterer altid når det lykkes at udføre en handling. I vort tilfælde blev meddelelsen <quote
><computeroutput
>No conflicts created by this import</computeroutput
></quote
> udskrevet, fulgt af den generelle linje <quote
><computeroutput
>*** Success ***</computeroutput
></quote
> eftersom ingen yderligere handling skulle udføres. </para>
</formalpara>

<note
><para
>Der <emphasis
>kunne</emphasis
> have været nogle fejlmeddelelser hvis filer med konflikter med arkivet allerede fandtes, eftersom &CVS; kontrollerer filindeholdet ifølge visse formelle kriterier, og rapporterer alle konflikter som den måske finder. </para
></note>

<formalpara>
<title
>Bygning af &cvs; administrative indgange</title>
<para
>&CVS;-importhandlingen er afsluttet i dette øjeblik. Arkivet er oprettet, og alle filer vi vil beholde er opbevaret i databasen. Alligevel så er der mere arbejde tilbage, eftersom &CVS;-programmet har brug for at have en vis administrativ information i hver mappe under programmet. Det bruger informationen senere, til at kommunikere med CVS-roden og arkivet. </para>
</formalpara>
<para
>Hvis vi kun arbejdede med &CVS;, ville vi skulle give en måde for at &CVS; kan opbevare denne information i vores arbejdsmappe. Vi ville for eksempel kunne <emphasis
>udtjekke</emphasis
> filerne igen i en tom basismappe, i hvilket tilfælde &CVS; automatisk ville udføre alle administrative handlinger sammen med de udtjekkede filer. </para>
<para
>Der er helsigvis en nemmere måde i &kdevelop;. Det sørger for skalscriptet <filename
>buildcvs.sh</filename
> i mappen <filename class="directory"
>/opt/kde3/share/apps/kdevcvs/</filename
> (igen, erstat <filename class="directory"
>/opt/kde3</filename
> med &kde;'s installationsmappe), som programguiden kalder efter &CVS;-programmet har udført sit arbejde med heldigt resultat. </para>
<para
>Scriptet <filename
>buildcvs.sh</filename
> laver i hovedsagen en <filename class="directory"
>CVS</filename
>-undermappe i hver mappe i programmets skelet. Hver af disse <filename class="directory"
>CVS</filename
>-undermapper indeholder følgende tre filer: </para>
<itemizedlist>
  <listitem
><para
><filename
>Root</filename
> indeholder navnet på serveren hvor &cvs;-roden er. I vort tilfælde er det den lokale rod <filename
>/home/udvikling/cvsroot</filename
>. Grunden til dette er at det samme arkiv altid skal bruges for filerne, eftersom &CVS; ikke opbevarer hele filerne, men kun <emphasis
>forskellene</emphasis
> for følgende dele. Dette sparer meget diskplads, men gør det nødvendigt at al følgende information holdes sammen under alle omstændigheder. </para
></listitem>
  <listitem
><para
><filename
>Repository</filename
> tjener samme formål. &CVS; har navnet på arkivet som skal bruges her, i vort tilfælde <filename
>Mit_nye_program</filename
>. </para
></listitem>
  <listitem
><para
><filename
>Entries</filename
> indeholder navnene og en del anden information om filerne som &CVS; tager sig af i mappen. Det afhænger af at &CVS; ikke nødvendigvis lægger alle programfiler i arkivet. Du kan fortælle hvilke filer som skal opbevares, og hvilke som skal ignoreres&mdash;denne information findes i filen <filename
>Entries</filename
>. </para>
  </listitem>
</itemizedlist>

<para
>Alt dette besvær er nødvendigt eftersom &CVS; arbejde er <emphasis
>mappebaseret</emphasis
>. Eftersom &CVS; tidligere opbevarede alle filer i skelettet <filename
>Mit_nye_program</filename
>, gennemsøger scriptet <filename
>buildcvs.sh</filename
> helt enkelt alle mapper og tilføjer navnene på alle programfiler som det finder i den tilsvarende fil i  <filename
>CVS/Entries</filename
>. </para>
<para
>Scriptet kører uden udskrift, og afsluttes kun uden flere linjer i vinduet <guilabel
>Meddelelser</guilabel
>, når arbejdet er klart. </para>

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

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

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