Lezione Qt 2: Impostare un file .pro “ad hoc”

Nella prima lezione, avevamo visto che per la compilazione dei sorgenti, era indispensabile il comando “qmake -project”. Questo comando crea automaticamente un .pro (del progetto). Se da un lato si ha un vantaggio perché il programmatore non deve prendersi la briga di creare un .pro dedicato, dall’altro si hanno una serie spropositata di svantaggi.

Un buon programmatore deve crearsi adeguatamente un proprio file .pro, altrimenti rischia di perdersi all’interno del progetto. La struttura di un file .pro non è difficile per niente, basta solo seguire i passi che a breve introdurrò.

Come prima cosa, un progetto Qt (o in genere un qualsiasi progetto) deve attuare un certo ordine. Non è una legge da rispettare, però seguire un certo “stile” aiuterà sicuramente il programmatore nello svolgimento delle operazioni. Ad esempio, è bene disporre i propri sorgenti all’interno di una directory “src”. Così come il file binario dentro “bin”, i file di compilazione dentro “build” e così via.

Prima di vedere come si crea un file .pro, bisogna introdurre alcuni concetti.

-> File per l’icona di windows (usato solo in windows)
In ambiente windows, i binari hanno in genere un’icona standard (quella per i .exe tradizionali). Per associare al binario un’icona, basta creare un file .rc e posizionarlo nella directory corrente del progetto.

Un esempio di tale file è questo:
IDI_ICON1 ICON DISCARDABLE "resources/icons/logo.ico"

-> File per le immagini (e in genere altri file)
In genere in un programma GUI sono presenti delle immagini, che vengono utilizzate per i menuitem, bottoni, oppure label. Ci sono 3 metodi per inserire un’immagine nel nostro programma:

  1. usare path assoluti: questo metodo non merita neanche attenzione (scongiurato);
  2. usare path relativi: in questi casi, le immagini hanno un percorso relativo all’eseguibile, e quindi si ha una certa “portabilità”. E’ comunque evidente che spostare il percorso del binario, implica uno sfasamento dei percorsi relativi;
  3. usare path assoluti all’interno del progetto: questo modo di operare include le immagini nel binario e non si hanno modi di sbagliare.

Spiego meglio il 3° punto. Le immagini (o altri file, ad esempio file di testo) vengono convertite in file sorgenti .cpp e nello specifico, in dei vettori pieni zeppi di numeri esadecimali. Questo a noi non ci interessa… la sostanza è che le immagini verranno incluse nel binario definitivo e il loro uso nelle finestre è completamente privo di rischi.

Un file del genere specifica le “risorse” che devono essere incluse nel progetto. In genere io uso una directory “resources” e dentro di essa, posiziono il mio file di risorsa che ha un estensione .qrc. Questo file è di tipo XML e di facile utilizzo. Dentro resources, creo un’altra directory “icons” contenente tutte le immagini che userò (preferisco png a jpg). Se ad esempio, dentro “resources/icons/” ho un file immagine chiamato “logo.png”, in “resources” avrò un file .qrc del genere:

<RCC>
<qresource prefix=”/icons” >
<file>icons/logo.png</file>
</qresource>
</RCC>

Io considero indispensabili la configurazioni di questi 2 file. Detto questo, procediamo alla creazione del file .pro per il nostro progetto.

Il nostro file .pro si chiamerà Progetto.pro e sarà così composto:

# sorgenti
HEADERS += src/finestra.h
FORMS += ui/finestra.ui
SOURCES += src/finestra.cpp src/main.cpp

# build
OBJECTS_DIR += build/o
MOC_DIR += build/moc
RCC_DIR += build/rcc
UI_DIR += build/ui

# binario
DESTDIR += bin

# altro
RC_FILE += Progetto.rc
RESOURCES += resources/Progetto.qrc

  • In HEADERS, FORMS e SOURCES abbiamo fissato il percorso fisico dei sorgenti e dei file delle finestre.
  • In OBJECTS_DIR ci sono i file oggetto delle compilazioni, in MOC_DIR i file sorgenti dovuti alla connessione degli eventi, in RCC_DIR sono presenti i file sorgenti delle risorse e in UI_DIR i file headers delle finestre. Queste 4 variabili prendetele così come sono, e usatele per ogni progetto Qt.
  • In DESTDIR andrà il binario risultante dalla compilazione totale.
  • In RC_FILE c’è il file per l’icona di windows.
  • In RESOURCES il file delle risorse.

Qua sotto, ecco la situazione attuale: avere impostato un progetto così significa partire ben ordinati!

A questo punto, scordatevi assolutamente il comando “qmake -project”. Dovrete da ora in poi, usare solo “qmake” e “make”.

Lascia una Risposta