# Primi passi — la procedura guidata per le applicazioni

In &kdevelop; lo sviluppo di software è organizzato in progetti. Un progetto include tutto il necessario per programmare: i file sorgente, i file di dati, le necessarie funzioni di gestione come il sistema make, l'accesso ai componenti e agli strumenti necessari per rendere l'applicazione funzionante.

L'organizzazione del lavoro di sviluppo in progetti permette di gestire facilmente tutte le attività e risulta molto pratico se si lavora su diverse applicazioni contemporaneamente. Si indica a &kdevelop; il progetto a cui si vuole lavorare e si procede dal punto dove è stato lasciato.

## Nuovi progetti

Quando si vuole iniziare un nuovo progetto di programmazione, vengono svolte parecchie procedure di setup: l'impostazione di una struttura di directory, la creazione dei file sorgente e header, l'inizializzazione del sistema make, ecc.

&kdevelop; fornisce un sistema semplice per iniziare un nuovo progetto di programmazione — la procedura guidata per le applicazioni. La si può trovare al menu Progetto Nuovo Progetto.

Usando la procedura guidata sono necessarie solo poche fasi per iniziare un nuovo progetto:

1. Selezionare il linguaggio di programmazione che si vuole usare e il tipo di applicazione da costruire scegliendo da una serie di modelli predefiniti.

2. Fornire alcune informazioni generali come il nome dell'applicazione, la directory dove essa deve essere costruita, ecc.

3. Decidere se si vuole usare un version control system, come ad esempio CVS e se necessario fornire gli eventuali dati necessari.

4. Impostare i modelli per i file sorgente e header (se possibile).

5. Infine la procedura guidata preparerà tutto il necessario, come la struttura della directory, i modelli dei file sorgente/header, gli strumenti di gestione come make, ecc.

Voilà — è tutto. La procedura guidata creerà un insieme di file, con i quali si potrà facilmente iniziare a lavorare.

Adesso si scenderà maggiormente nei dettagli...

### Fasi preliminari

Per creare un nuovo progetto con &kdevelop;, selezionare Nuovo Progetto... dal menu Progetto. Apparirà la finestra di dialogo Crea nuovo progetto mostrando la pagina Generale:

Finestra di dialogo per creare un nuovo progetto

Come si può vedere, la finestra di dialogo è divisa in una parte superiore e una inferiore. In quella superiore si può decidere il linguaggio di programmazione e il tipo di applicazione, mentre in quella inferiore sono presenti alcune informazioni generali.

#### Selezionare il linguaggio di programmazione e il tipo di applicazione

La selezione viene effettuata nella parte sinistra della zona superiore, dove è presente una lista di cartelle corrispondenti a vari linguaggi di programmazione, per esempio:

- Ada

- C

- C++

- Database (Progetti SQL)

- Fortran

- Haskell

- Java

- PHP

- Pascal

- Perl

- Python

- Ruby

- Shell (Script per la shell Bash)

Più precisamente queste cartelle non contengono i veri strumenti di programmazione, ma dei modelli predefiniti che possono essere usati come punto di partenza per la programmazione in quel particolare linguaggio. Per avere un'idea di quello che viene fornito, aprire le varie cartelle. In alcune di esse saranno presenti una serie di sottocartelle, mentre in altre ci saranno alcuni semplici elementi. Le sottocartelle organizzano i modelli disponibili a seconda dei vari compiti, mentre gli elementi rappresentano dei modelli che possono essere selezionati.

Non si scenderà ulteriormente nei dettagli su quale compito viene svolto dai vari modelli, ma è semplice scoprirlo. Quando si seleziona un elemento vengono fornite alcune informazioni nei campi a destra. Più in basso si troverà una breve descrizione di cosa dovrebbe fare il modello. In alto, se disponibile, verrà mostrata un'immagine dell'applicazione che verrà prodotta dal modello una volta compilata e avviata senza modifiche. Normalmente questa immagine è uno screenshot della finestra principale dell'applicazione.

Per prima cosa, selezionare il modello che si adatta meglio agli scopi della propria applicazione. Poi inserire le proprietà generali nei campi in basso come mostrato in seguito.

#### Selezionare un sistema di gestione dei progetti

Ogni modello è legato ad uno specifico Sistema di gestione dei progetti, che attualmente non può essere scelto liberamente. Si deve trovare un modello che corrisponda alle proprie necessità oppure modificare il progetto dopo la sua creazione.

#### Fornire le informazioni generali

La parte più in basso della pagina Generale della finestra di dialogo Crea nuovo progetto contiene un gruppo di campi chiamati Proprietà che devono essere compilati in modo che la procedura guidata sappia come costruire la struttura iniziale del progetto.

#### Nome dell'applicazione

Ovviamente l'applicazione deve avere un nome. Inserirlo nel campo più in alto del riquadro Proprietà chiamato Nome Applicazione. Nell'esempio è stato usato il nome NuovaApplicazione.

I caratteri speciali vengono rifiutati; gli unici caratteri ammessi sono:

- caratteri maiuscoli e minuscoli

- numeri

- il carattere underline

Questa restrizione è necessaria poichè la procedura guidata usa il nome dell'applicazione per costruire i nomi di alcune classi, quindi questo nome dovrà attenersi alle regole del linguaggio di programmazione usato.

#### Directory del progetto

Nella linea inferiore dell'area Proprietà è presente il campo Posizione Finale e visualizza la directory dove verrà creata l'applicazione.

Mentre si scrive il nome si noterà che la procedura guidata ripete il proprio input alla fine della linea Posizione Finale, usando solo i caratteri minuscoli.

Per questo deve essere selezionato con cura. Se si usa il nome di una directory già usata la procedura guidata non permetterà di continuare con la prossima fase tenendo disattivato il pulsante Successivo > (rendendolo grigio). Tuttavia la procedura guidata segnalerà il problema aggiungendo la scritta (dir./file già esistente) nella linea Posizione finale.

#### Il percorso di partenza

Ci sono due modi per scegliere un altro percorso per la propria applicazione: si può selezionare un altro nome, ma non è sempre attuabile. In alternativa si può selezionare un altro percorso della directory dell'applicazione.

Questo viene fatto nella seconda riga del gruppo Proprietà, chiamata Posizione, dove si inserisce il percorso di partenza dell'applicazione. Quando il progetto è inizializzato la procedura guidata aggiunge a questo percorso il nome dell'applicazione. Il percorso completo viene visualizzato nella linea Posizione finale.

La procedura guidata copierà un valore iniziale nel campo Posizione ricavato dall'opzione Directory progetti predefinita durante la configurazione generale. In questo caso il percorso iniziale per i nuovi progetti è `/home/devel/`.

Cambiare il contenuto del campo Posizione in modo che la directory di sviluppo dell'applicazione mostrata nella Posizione finale sia univoca.

Accertarsi che il percorso che si inserisce nel campo Posizione sia esistente. In caso contrario non si potrà continuare con la prossima fase. Nel caso in cui il percorso non esistesse la procedura guidata segnalerà il problema aggiungendo il testo (non valido) nella linea Posizione finale.

#### Informazioni personali

I campi seguenti non sono fondamentali come quelli precedenti. Inserire il proprio nome (cioé il nome del responsabile) nel campo Autore, e un indirizzo di email valido nel campo Posta elettronica, in modo che gli utenti possano fornire un eventuale feedback per l'applicazione.

1. La procedura guidata riempie questi campi con alcuni valori di default, ricavati dalle impostazioni presenti nel centro di controllo KDE. Se i valori di default dei campi Autore e Posta elettronica non sono appropriati si dovrebbe controllare la propria configurazione di posta nel centro di controllo KDE.

2. Se questa informazione è disponibile, verrà integrata dalla procedura guidata nel modello dell'applicazione. Ad esempio nei programmi KDE C++ la si troverà vicino all'inizio del file `main.cpp`.

3. Posta elettronica è un campo opzionale, poiché non tutti gli sviluppatori hanno accesso a Internet. Se si desidera si può lasciare il campo vuoto e procedere.

#### Informazioni sulla versione e sulle licenze

Infine inserire un numero di versione nel campo Versione e selezionare la licenza con la quale rilasciare l'applicazione nel menu Licenza.

Se si seleziona un tipo di applicazione per la quale vengono forniti i modelli dei sorgenti dalla procedura guidata (ad esempio C/C++), si potrà vedere il testo di notifica della licenza nella terza pagina della finestra di dialogo Crea nuovo progetto (vedere il capitolo Fornire i modelli dei file header/sorgente).

Se si seleziona Personalizzato nel menu Licenza si dovrà inserire il testo della licenza.

Sia la versione che le informazioni sulla licenza saranno integrati nei modelli in un formato appropriato per il tipo di applicazione selezionata.

Quando sono state inserite correttamente tutte le informazioni, premere il pulsante Successivo > per procedere.

### Fornire le informazioni del Version System

Nella seconda fase la procedura guidata mostrerà la pagina Version Control System dove si può decidere quale version control system si vuole usare.

Questo capitolo si limita a fornire le informazioni necessarie per la creazione di progetti. Per ulteriori informazioni su CVS vedere il capitolo Usare CVS

### Nessun Version Control System

Inizialmente è selezionato Nessuno nel menu Sistema di controllo versione e la pagina è vuota. Se non si vuole usare un version control system, fare clic sul pulsante Successivo > e proseguire.

### Usare CVS

In caso contrario si deve selezionare il version control system che si vuole usare dal menu Sistema di controllo versione. In questo esempio si userà &cvs;. Se lo si seleziona, la procedura guidata ridisegnerà la pagina, visualizzando una serie di campi da riempire.

Impostare un nuovo progetto con il CVS

Un version control system come &CVS; (che significa Concurrent Versions System) conserva copie dei file del progetto in una sorta di database. Se si usa &CVS; si possono caricare (commit) o scaricare questi file nella propria directory del progetto (checkout, o update). La particolarità consiste nella struttura in cui sono immagazzinati i file che permette di ripristinare un precedente stato di sviluppo. Con &CVS; diversi progettisti possono collaborare facilmente ad un grande progetto senza disturbarsi a vicenda.

### Radice CVS

&cvs; deve amministrare il database costituito dai file del progetto, conservando alcune informazioni speciali in una directory chiamata radice &cvs;. Quindi per prima cosa si deve indicare a &kdevelop; dove è situata questa directory radice.

Radice &cvs; locale. Ci sono due possibilità: usare un database CVS locale o uno che è mantenuto su un server remoto. Se si sviluppa in proprio, si potrebbe usare il database &cvs; come una sorta di sistema di backup sul proprio computer. Normalmente questo è impostato sulla propria directory home e ha come nome `cvsroot`. Potrebbe essere simile a questo:

``/home/devel/cvsroot`` (dove `devel` indica semplicemente l'utente sviluppatore, ad esempio)

Di fatto, questa è la forma abbreviata. Esattamente, la radice locale del &cvs; dovrebbe essere indirizzata usando il prefisso `:local:`. La forma breve è permessa solo nei casi in cui il nome del file inizia con una barra (`/`). Il nome completo per l'esempio sarebbe esattamente così:`:local:/home/devel/cvsroot`

Inserire il nome della directory radice del &cvs; del proprio sistemanel campo Radice CVS. In principio si può selezionare ogni nome, anche database &cvs; multipli, ma è consigliabile attenersi alla radice &cvs; impostata.

Inizializzare una nuova radice &cvs;. Se non esiste ancora una radice &cvs;, &kdevelop; può comandare a &cvs; di crearne una nella directory indicata. Selezionare la casella Init root sotto al campo Radice CVS.

Come detto in precedenza, &kdevelop; invia al sistema &CVS; i comandi per inizializzare una nuova radice &cvs;. Fortunatamente, &cvs; è abbastanza saggio da controllare se esiste già una directory radice. Perciò non succede nulla di male se si seleziona inavvertitamente la casella Init root in una directory radice già esistente.

Radice &cvs; remota. Ci sono situazioni dove il database &cvs; deve essere mantenuto su un server remoto, specialmente quando diversi sviluppatori lavorano allo stesso progetto. In questo caso si deve inserire l'URL della radice &cvs; di questo server nel campo Radice CVS. Per esempio, se si vuole accedere al server &cvs; di &kde;:

``:pserver:mylogin@cvs.kde.org:/home/kde`` dove `mylogin` indica il nome che è stato impostato nell'account &cvs; di &kde;)

### Tipi di server &cvs; remoti

Principalmente ci sono due tipi largamente usati di server &cvs; remoti, il pserver che usa un protocollo non cifrato protetto da password e il server ext che usa il trasferimento dati cifrato rsh o ssh. Si distinguono dal prefisso dell'URL:

`:pserver:`

per un server protetto da password non cifrato, e

`:ext:`

per un server cifrato di tipo rsh o ssh. Per esempio

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

accede alla radice &cvs; del famoso strumento di gestione Cervisia sul server SourceForge.

Se si vuole usare un server cifrato rsh o ssh per l'accesso &cvs; si deve indicare a &kdevelop; il protocollo di cifratura da usare. Inserire `rsh` o `ssh` nel campo CVS_RSH della pagina Version Control System della finestra Crea nuovo progetto.

Bisogna fare attenzione se si usa un server &cvs; cifrato con &kdevelop;. Vedere il capitolo Usare CVS per i dettagli.

### Il deposito &cvs;

Fin qui è stato indicato a &kdevelop; dove risiede la radice &cvs; che gestisce il database e come accedervi. Adesso si deve inserire sotto quale nome si vogliono salvare i file del progetto nel database. La posizione dove i file di progetto vengono memorizzati è detta deposito (repository).

In principio si può usare qualunque nome per il deposito &cvs;, purchè aderisca alle specifiche per i nomi dei file, tuttavia molti sviluppatori usano semplicemente il nome stesso dell'applicazione. Siccome &CVS; costruirà una directory con questo nome nella radice &cvs;, se si usa il nome dell'applicazione sarà più facile trovarla.

Inserire il nome del deposito che si vuole usare nel campo CVS repository della pagina Version Control System della finestra Crea nuovo progetto. Nell'esempio è: `NuovaApplicazione`

Si eviti di usare un deposito già esistente! Il sistema &CVS; non avverte in caso di file duplicati ed elimina tutto quello che non produce un conflitto formale. Si rovinerà tutto!

### Campi restanti

Non c'è molto altro lavoro da fare: la procedura guidata ha impostato i campi rimanenti. Nel dettaglio:

Il campo Tag del Vendor è usato solo per ragioni di compatibilità. Si può mantenere il valore di default vendor che viene inserito dalla procedura guidata.

Il campo Messaggio permette di commentare i contenuti iniziali di &cvs;. Usare qualunque testo desiderato oppure lasciare il valore di default nuovo progetto che viene inserito dalla procedura guidata.

Il Tag di release contiene il nome che etichetta lo stato iniziale del progetto. Una tale etichetta definisce all'interno del deposito &CVS; un certo punto dal quale si può in seguito accedere a quello stadio di sviluppo. (Ulteriori informazioni nel capitolo Usare CVS)

La procedura guidata mette un valore di default avvia che è una buona proposta. Si può lasciare questa.

Fino al momento della costruzione del progetto, &kdevelop; non saprà se c'è qualche informazione sbagliata: sarà il sistema &CVS; a individuare questi errori quando costruirà il deposito. Quindi si deve controllare la finestra Messaggi di &kdevelop; quando viene creato il progetto. Se c'è stato qualche errore nelle impostazioni del &CVS; nella maggior parte dei casi si vedranno messaggi di errore come questi:

    * cd '/home/devel/test' && cvs -d '/home/devel/mycvsroot' \
      import -m 'nuovo progetto' '' 'vendor' 'avvia' &&\
      sh /opt/kde3/share/apps/kdevcvs/buildcvs.sh . '' \
      '/home/devel/mycvsroot'
    * cvs [import aborted]: /home/devel/mycvsroot/CVSROOT: No such file or
      directory
    * *** Exited with status: 1 ***

In questo caso si deve impostare manualmente &cvs; (&kdevelop; dovrebbe aver inizializzato con successo i file del progetto) o cancellare la directory del progetto e ricominciare da capo con il comando Nuovo Progetto... dal menu Progetto.

Dopo aver inserito tutte le informazioni relative a &CVS;, fare clic sul pulsante Successivo > per procedere.

Se si vuole correggere un errore nella pagina precedente, premere il pulsante < Precedente. La procedura guidata ricorderà le impostazioni della pagina attuale, in modo da poter procedere facilmente quando si ritornerà a questa pagina.

### Fornire i modelli dei file header/sorgente

Nella prossima fase saranno impostate alcune informazioni da includere nei file sorgente e header.

Nelle rispettive pagine vengono forniti i modelli dei file header e sorgente per le applicazioni C/C++. Per gli altri linguaggi potrebbe essere disponibile solo il modello per il file sorgente, e in alcuni casi si troveranno le pagine dei modelli vuote.

Se la pagina viene usata, sarà riempita dalla procedura guidata con alcuni commenti, che nel caso di applicazioni C++ appariranno così:

    /***************************************************************************
     *   Copyright (C) 2003 by Nome                                            *
     *   io@io.it                                                              *
     *                                                                         *
     *   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.             *
     ***************************************************************************/

Gli altri modelli forniranno informazioni simili in un formato adatto al linguaggio di programmazione usato.

Il gestore delle applicazioni usa le informazioni che sono state fornite nella pagina Generale della finestra di dialogo Crea nuovo progetto, cioè i contenuti dei campi Autore e Posta elettronica. Anche le informazioni sulla licenza vengono inserite in base alla selezione effettuata nel menu Licenza.

#### Come modificare i modelli

Quando &kdevelop; creerà un nuovo file sorgente e/o header, verranno elaborati i modelli presenti nella finestra di dialogo Crea nuovo progetto. Le informazioni fornite nei modelli saranno incluse nell'intestazione dei file che precede il codice.

Oltre al semplice testo, &kdevelop; riconosce diverse variabili che permettono di includere informazioni nel file. La procedura guidata usa alcune di queste varibili per inserire le informazioni Autore, Posta elettronica e Licenza.

#### Includere informazioni di &doxygen;

Se, ad esempio, si vuole che la documentazione API di &doxygen; visualizzi alcune informazioni sul contenuto del file si potrebbero includere le seguenti linee nel modello di file sorgente.

    /**
     * \file $MODULE$.cpp
     * \brief (inserire-qui-una-breve-descrizione).
     **/

Quando verrà creato un nuovo file sorgente, &kdevelop; sostituirà la variabile `$MODULE$` con il nome del file creato. Per esempio, se si crea una nuova classe C++ chiamata `ASimpleTest` il file `asimpletest.cpp` conterrà le linee seguenti:

    /**
     * \file asimpletest.cpp
     * \brief (inserire-qui-una-breve-descrizione).
     **/

Si dovrà fornire una breve descrizione dopo la parola chiave \brief, ma parte del lavoro è stato fatto automaticamente.

#### Il file della licenza

Si potrebbe, ad esempio, includere nel modello un accenno al testo di licenza usato. A questo scopo di usa la variabile `$LICENSEFILE$`, aggiungendo una linea come questa:

    //   Vedere $LICENSEFILE$ per il testo completo della licenza.

La procedura guidata sostituirà `$LICENSEFILE$` con il nome del file dove si trova il testo completo della licenza, cioè:

    //   Vedere COPYING per il testo completo della licenza.

per la licenza GPL, o

    //   Vedere LICENSE.BSD per il testo completo della licenza.

se si decide di rilasciare l'applicazione sotto licenza BSD.

Ovviamente esistono molte altre variabili riconosciute da &kdevelop;. Vedere la sezione Modificare i modelli del capitolo Strumenti di Editing per ulteriori informazioni.

I modelli che sono stati definiti saranno utilizzati solo dopo che la procedura guidata ha creato il nuovo progetto. Le informazioni che contengono si trovano informazioni all'inizio dei file che vengono creati. Quando verranno creati i file iniziali la procedura guidata userà alcuni modelli standard predefiniti, che dovranno essere modificati manualmente.

### Compilare i file iniziali

È stato fatto quasi tutto. Nell'ultima pagina il testo del pulsante Successivo > cambierà diventando Fine.

Pensarci due volte prima di fare clic! Si può ancora rivedere ogni cosa premendo ripetutamente il pulsante < Precedente. Siccome la procedura guidata ricorda tutte le informazioni che sono state inserite, potrebbe essere consigliabile prendersi il tempo per rivederle ancora una volta. Nel caso si usi un CVS locale, non dimenticare di controllare il nome del deposito CVS (non dovrebbero esistere sottodirectory con quel nome nella directory radice CVS — se esistono provare un altro nome per il deposito).

Se non si vuole costruire il nuovo progetto, fare clic sul pulsante Annulla in modo da chiudere la finestra di dialogo Crea nuovo progetto. In caso contrario premere il pulsante Fine e controllare nella finestra Messaggi l'inizializzazione del progetto.

Se si vuole usare un sistema di versioning (&CVS;) ci sono effettivamente due percorsi. La procedura guidata costruirà prima le directory del progetto e i file, in seguito chiamerà il programma &CVS; che inserirà nella finestra Messaggi il proprio output. Se capita qualche errore in queste fasi si fermerà il processo, mostrando il messaggio di errore opportuno nella finestra.

Nella maggior parte dei casi, quando il progetto è stato impostato, &kdevelop; caricherà automaticamente il/i file sorgente di uno o più moduli principali in modo da poter iniziare facilmente a lavorare. (Tuttavia, quale modulo sorgente verrà visualizzato dipende dal modello inizialmente selezionato nella procedura guidata).

Non dimenticarsi di fare un controllo preliminare del lavoro svolto dalla procedura guidata. Per esempio si potrebbe voler modificare le informazioni di intestazione in base ai propri modelli, che normalmente si trovano nella sottodirectory `templates` della directory del progetto. Saranno sufficienti alcune semplici operazioni di copia.

In seguito è consigliabile compilare il progetto prima di iniziare a cambiare il codice. Nella maggior parte dei casi sarà possibile effettuare la compilazione. In questo modo si può capire se il progetto è stato impostato in modo opportuno. In caso contrario, rimuovere semplicemente la directory del progetto (anche nella radice &CVS; se è stata usata) e ripartire nuovamente.

Prima di compilare il nuovo progetto, controllare in Progetto Configurazione compilazione. Se sono visualizzate tre selezioni: default, optimized, e debug e quest'ultima è selezionata si deve mantenere questa configurazione oppure selezionare optimized.

A causa di alcune limitazioni nell'impostazione attuale di autoconf/automake non si dovrebbe per nessun motivo compilare nella configurazione default. Questo corromperà alcune impostazioni interne della directory, quindi `configure` si lamenterà quando si tenterà di usarlo in seguito nella configurazione optimized o debug.

(Questo si applica solo con queste capacità di multiselezione. Se il tipo della propria applicazione fornisce solo la configurazione default, si deve ovviamente usare quest'ultima).