<chapter id="adv-build-management">
<title
>Gestione Avanzata della compilazione</title>
<indexterm zone="adv-build-management"
><primary
>&automake;</primary
></indexterm>

<sect1 id="buildconfigurations">
<title
>Configurazioni di compilazione multiple</title>
<indexterm zone="buildconfigurations"
><primary
>configurazioni di compilazione</primary
><secondary
>multiple</secondary
></indexterm>

<para
>(... da scrivere ...) </para>

</sect1
> <!-- buildconfigurations -->

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

<sect1 id="crosscompiling">
<title
>Cross-compilazione</title>
<indexterm zone="crosscompiling"
><primary
>cross compilazione</primary
></indexterm>
<indexterm zone="crosscompiling"
><primary
>compilazione</primary
><secondary
>cross</secondary
></indexterm>
<indexterm zone="crosscompiling"
><primary
><option
>--host</option
></primary
></indexterm>

<para
>Quando si hanno a disposizione dei cross compilatori si possono compilare i programmi per processori e sistemi operativi diversi da quello in cui viene eseguito il compilatore e &kdevelop;. Il compilatore &GNU; &gcc; può essere configurato e compilato come un cross compilatore. Consultare le <ulink url="info://gcc/Cross-Compiler"
>pagine info di GCC</ulink
> per maggiori informazioni. Alcune distribuzioni &Linux; forniscono anche pacchetti binari.  </para>

<para
>Un pacchetto basato su <application
>automake</application
> può essere facilmente cross-compilato passando l'opzione <option
>--host</option
> dello script configure e impostando le variabili d'ambiente <envar
>CC</envar
> e <envar
>CXX</envar
> sui relativi file binari dei cross compilatori. Spesso si desidera passare dalla versione cross compilata a quella compilata per il proprio sistema e viceversa. Per questo motivo è conveniente usare la capacità di &kdevelop; di creare configurazioni multiple di compilazione, come spiegato nel capitolo <xref linkend="buildconfigurations"/>. Una volta creata una nuova configurazione per la cross compilazione nella finestra di dialogo <menuchoice
><guimenu
>Progetto</guimenu
><guimenuitem
>Opzioni progetto...</guimenuitem
></menuchoice
>, aggiungere l'opzione </para>

<screen
><option
>--host=</option
><replaceable
>piattaforma</replaceable
></screen>

<para
>alle opzioni di configure. Il nome <replaceable
>piattaforma</replaceable
> è una ennupla nella forma </para>

<programlisting
>cpu-vendor-os</programlisting>
<para
>o</para>
<programlisting
>cpu-vendor-kernel-os</programlisting>

<para
>Si può usare la forma breve per molte combinazioni, per esempio <wordasword
>i386-linux</wordasword
> o <wordasword
>arm-elf</wordasword
>. </para>

</sect1
> <!-- crosscompiling -->

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

<sect1 id="qtembedded">
<title
>Qt/Embedded</title>
<indexterm zone="qtembedded"
><primary
>embedded</primary
><secondary
>Qt</secondary
></indexterm>
<indexterm zone="qtembedded"
><primary
>Qt/Embedded</primary
></indexterm>
<indexterm zone="qtembedded"
><primary
>Qtopia</primary
></indexterm>
<indexterm zone="qtembedded"
><primary
>framebuffer</primary
></indexterm>

<para
>&qte; è una versione delle librerie &Qt; che nei sistemi &Linux; non usa il sistema X window, ma disegna direttamente sul framebuffer. Perciò è interessante per sistemi embedded che hanno strette restrizioni sull'uso della memoria di sistema. Le &API; sono pienamente compatibili con quelle della versione X11. </para>

<para
>Sviluppare applicazioni per &qte; con &kdevelop; non è molto diverso dallo sviluppo di un programma per la versione X11 di &Qt;. Di fatto, si può usare lo stesso codice per entrambe le versioni. Se si usa il gestore di progetti autoproject si può passare alla versione embedded passando allo script configure l'argomento <option
>--enable-embedded</option
>. Si può impostare questo in <guilabel
>Opzioni di configurazione</guilabel
> nella finestra di dialogo <menuchoice
><guimenu
>Progetto</guimenu
><guimenuitem
>Opzioni progetto...</guimenuitem
></menuchoice
>. Con l'opzione <option
>--with-qt-dir=DIR</option
> si può impostare la directory in cui è installata la libreria &qte;. </para>

<para
>Dopo aver configurato e compilato la propria applicazione con queste opzioni, verrà eseguito il link con la libreria <filename
>libqpe.so</filename
>. Questa versione dell'applicazione normalmente non funzionerà quando si usa X11: per testarla avviarla sotto il controllo dell'applicazione <application
>qvfb</application
> (&Qt; Virtual Frame Buffer). Questo viene fatto avviando <application
>qvfb</application
> ed eseguendo l'applicazione con </para>

<screen
><command
>app <option
>-qws</option
> <option
>-display QVFb:0</option
></command
></screen>

<para
>Naturalmente si vorrà usare una versione funzionante della propria applicazione sul processore di destinazione. Probabilmente sarà utile creare configurazioni multiple di compilazione, come spiegato prima, in modo da passare velocemente tra la versione eseguita nel proprio sistema di sviluppo e la versione eseguita sul sistema di destinazione. </para>

<para
>Normalmente le applicazioni per &qte; vengono eseguite come applicazioni singole nei dispositivi per i quali sono state progettate. Trolltech supporta anche Qtopia, che è una collezione di applicazioni per PIM, come browser e altri che funzionano assieme in maniera consistente. Ad esempio è un ambiente standard dello Sharp Zaurus. Si possono scrivere applicazioni che si integrano in questo ambiente usando l'SDK di Qtopia, rendendo la classe della propria applicazione una sottoclasse di <classname
>QPEApplication</classname
> ed effettuando il link alle librerie <filename
>libqpe.so</filename
>. Se si sviluppa l'applicazione con il gestore di progetti autoproject si deve aggiungere <option
>--enable-qtopia</option
> agli argomenti di configure. </para>

</sect1
> <!-- qtembedded -->

</chapter
> <!-- adv-build-management -->
