Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio,...

45
Sviluppo C++ multi-piattaforma con strumenti Open Source Gli strumenti di programmazione liberi per tutti i sistemi operativi Davide “CD-RON” Rondini Montebelluna Linux User Group 25 ottobre 2008 – Castelfranco Veneto Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 1 / 45

Transcript of Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio,...

Page 1: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Sviluppo C++ multi-piattaforma con strumenti OpenSource

Gli strumenti di programmazione liberi per tutti i sistemi operativi

Davide “CD-RON” Rondini

Montebelluna Linux User Group

25 ottobre 2008 – Castelfranco Veneto

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 1 / 45

Page 2: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Licenza d’utilizzo

Copyright c© 2008, Davide “CD-RON” Rondini.Questo documento viene rilasciato secondo i termini della licenza Creative Commons(http://creativecommons.org).L’utente è libero di:

distribuire, comunicare al pubblico, rappresentare o esporre in pubblico lapresente opera

alle seguenti condizioni:

Attribuzione Deve riconoscere la paternità dell’opera all’autore originario.

Non commerciale Non può utilizzare quest’opera per scopi commerciali.

No opere derivate Non può alterare, trasformare o sviluppare quest’opera.

In occasione di ogni atto di riutilizzazione o distribuzione, deve chiarire agli altri i termini dellalicenza di quest’opera.Se ottiene il permesso dal titolare del diritto d’autore, è possibile rinunciare a ciascuna di questecondizioni. Le utilizzazioni libere e gli altri diritti non sono in nessun modo limitati da quantosopra. Questo è un riassunto in lingua corrente dei concetti chiave della licenza completa (codicelegale), reperibile sul sito Internethttp://creativecommons.org/licenses/by-nc-nd/2.0/legalcode

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 2 / 45

Page 3: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Sommario

1 Introduzione2 Il compilatore

Sistemi *NIXWindows

3 gestione progettiCMake

4 Librerie grafiche5 Version Control System

Subversion6 Installazione e distribuzione

CPackNSISPacchetti Linux (deb, rpm)

7 Bibliografia

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 3 / 45

Page 4: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Supportare più di un sistema operativo

Perché sviluppare multi-piattaformaRaggiungere un’utenza più ampia possibileSoftware di ampio utilizzoUnico sforzo di sviluppoMettersi al riparo dalle variazioni di mercatoRichieste diverse degli utentiNon appoggiare un monopolio

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 4 / 45

Page 5: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Supportare più di un sistema operativo

Perché C++?PrestazioniBase di librerie sterminataAccesso a basso livelloStandardizzazione(ISO/IEC 14882:2003)C’è almeno un compilatoreper piattaformaProgrammazioneobject-oriented

Regole generaliUtilizzare più possibile glistandard C++: ANSI, STLVerificare che le API che sivogliono usare sianoportabili (' Open Source)Definire i sistemi operativisupportati in fase diprogettazioneFare il debug in parallelo

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 5 / 45

Page 6: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

GCC - GNU Compiler Collection

Perché GCCStandard de facto inambienti non-WindowsOpen SourceImplementa correttamentegli standardProduce binari con buoneprestazioniAffidabileSupporta decine dipiattaforme hardware

LinguaggiCC++Objective-CFortranJavaAda

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 6 / 45

Page 7: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Oltre il compilatore

Debuggergdb Estremamente

potente eflessibile, ilcompagnoideale di gcc.

valgrind Memorydebugger, utileper scovarememory leak.

Profilergprof Per ottimizzare almassimo il proprio codice.

IDEEclipse IDE nato per Java, ma

multi-linguaggio.Flessibile e potente,ma pesante.

kdevelop IDE di KDE,multi-linguaggio,orientato allo sviluppoKDE/Qt.

Anjuta IDE di Gnome,multi-linguaggio,oriantato allo sviluppoGnome/GTK.

vi/Emacs/joe Per i fan della riga dicomando

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 7 / 45

Page 8: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

kdevelop

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 8 / 45

Page 9: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Eclipse

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 9 / 45

Page 10: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Anjuta

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 10 / 45

Page 11: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Apple MacOS

ToolsApple utilizza gcccomecompilatore, equindi molti deitool collegati,come gdb.

ToolsMacOS fornisceun IDEpreinstallato,XCode.

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 11 / 45

Page 12: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Compilatori Open Source per Windows

MinGWIn pratica un port di gcc per Windows, ma più limitato. Spesso serveinstallare librerie GNU per farlo funzionare.

Dev-C++Fondamentalmente un IDE per MinGW, basato su strumenti GNU(gdb, Cygwin).

OpenWatcomCompilatore prima commerciale, poi reso libero. Nato nel 1965 comecompilatore FORTRAN, molto diffuso negli anni ’80-’90, oggi moltomeno.

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 12 / 45

Page 13: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Compilatori gratuiti per Windows

Microsoft Visual C++Express

Ambiente di sviluppocompleto MicrosoftComprende compilatore,debugger, IDE, API(versione 2008)Dalla versione 2005 leversioni Express sonogratuite (non Open Source)

Perché usarloSoluzione nativa MicrosoftOttima integrazioneDebugger eauto-completamento di altolivelloIDE evoluto emulti-linguaggio

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 13 / 45

Page 14: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Visual C++ Express

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 14 / 45

Page 15: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Gestione progetti

Progetti nativi

*NIXMakefile

File di testointerpretati dal

programma make

Windowsvcproj/dsp/sln

File XML generati egestiti da Visual

Studio.nmake

Analogo a make perWindows.

Macxcodeproj/nib

Xcode gestisce ipropri file diprogetto...Makefile

...ma essendo *NIXè compatibile con

make.

È possibile utilizzare Makefile su tutte le piattaforme, con qualcheaccortezza.

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 15 / 45

Page 16: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

CMake - Cross-platform Make

CMake è un sistema digenerazione di file di progettoper diversi compilatori epiattaforme.

CaratteristicheGenera i file di progettonativi per altri toolUsa una sintassi unificataOpen SourceSupporta moltissimicompilatoriSviluppato da Kitware Inc.Usato da KDE 4.xGUI o CLI

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 16 / 45

Page 17: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Come funziona CMake

Come è strutturatoGli script di progetto sichiamanoCMakeLists.txt

Ogni sotto-cartella ha unsuo CMakeLists.txt

CMake separa i file dicompilazione dai sorgentiLe librerie più comunivengono caricatefacilmente, tramite scriptgià forniti con CMake

CMake sotto Windows

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 17 / 45

Page 18: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Esempio di CMakeLists.txt 1/2

Cartella principale

1# Nome proge t to "HELLO" .2# C a r t e l l a de i so rgen t i : $ {HELLO_SOURCE_DIR }3# C a r t e l l a de i f i l e d i compi laz ione : $ {HELLO_BINARY_DIR } .4cmake_minimum_ requ i red (VERSION 2 . 6)5p r o j e c t (HELLO)6

7# I nd i ca l e s o t t o c a r t e l l e da compi lare8# Ciascuna deve contenere i l p rop r i o CMakeLists . t x t9add_ subd i rec to ry ( l i b r a r y )10add_ subd i rec to ry ( main )

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 18 / 45

Page 19: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Esempio di CMakeLists.txt 2/2

Cartella library

1# Crea una l i b r e r i a chiamandola He l lo2# Inc lude i l f i l e h e l l o . cpp3# I l nome del f i l e output e ’ automat ico4add_ l i b r a r y ( He l lo h e l l o . cpp )

Cartella main

1# Inc lude g l i header d e l l a l i b r e r i a He l lo2i nc lude _ d i r e c t o r i e s ( $ {HELLO_SOURCE_DIR } / He l lo )3# Aggiunge i l percorso d i l i n k d e l l a l i b r e r i a h e l l o4l i n k _ d i r e c t o r i e s ( $ {HELLO_BINARY_DIR } / He l lo )5# Crea l ’ esegu ib i l e6add_executable ( he l loMain main . cpp )7# Fa i l l i n k i n g d i h e l l o ne l main8t a r g e t _ l i n k _ l i b r a r i e s ( he l loMain Hel lo )

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 19 / 45

Page 20: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Le librerie grafiche

Cos’è e a cosa serve un toolkit graficoOggigiorno quasi tutte le applicazioni hanno una GUIPer il multi-piattaforma la scelta del toolkit grafico è critica.È essenziale minimizzare lo sforzo di porting con una libreriacomunePer l’utente è importante un aspetto grafico coerente tra le diverseapplicazioni

Open SourcewxWidgetsGTK+

Dual licensingQt

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 20 / 45

Page 21: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

wxWidgets

wxWidgetswxWindows LicenseHa decine di bindings e diportCompila più o menoovunque esista uncompilatore ANSI C++.Usa le API native dellapiattaforma

ProOpen SourceDocumentazioneFacilità di programmazionePiattaforme e compilatorisupportati

ControMulti-threading pocoevolutoPoco noteEditor form poco evoluti ocommerciali

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 21 / 45

Page 22: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Qt

QtGPLv2 per Open Source,Proprietaria per sviluppocommercialeAlla base di KDESviluppato da Trolltech,oggi NokiaFramework completo(supporto del sonoro)

ProIntegrazione con KDEMolto evoluto e completoInnovativeQt designerPossibile supportocommerciale

ControLicenze commercialicostoseSupporto Visual Studiosolo commerciale

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 22 / 45

Page 23: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

GTK+

GTK+/gtkmmLGPL 2.1Alla base di GNOMEDerivate dal progetto GIMPFanno parte del progettoGNUAPI C con wrapper C++ (ealtri)

ProOpen SourceOttimo supporto LinuxIntegrazione con GNOMEEssenziale e sempliceSupporto per l’accessibilità

ControSolo toolkit graficoCompilazione su Windowsnon immediataCompilabili su Windowssolo con MinGW

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 23 / 45

Page 24: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Controllo di versione

Il controllo di versioneSoftware per gestire lemodifiche al codice di unprogetto. Un VCS consente di:

Tenere traccia dellemodifichePoter tornare indietro erecuperare vecchieversioniGestire più programmatoriche lavorano in parallelosul codiceRamificazioni e sviluppoparallelo di più versioni

VCS e multi-piattaformaNello sviluppo multi-piattaformail controllo di versione diventaessenziale.Permette di mantenere unaversione di riferimento unificataper tutte le piattaforme.

Software Open SourceCVSSubversionBazaarMercurialGit

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 24 / 45

Page 25: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Come funziona il VCS 1/2

Il repositoryI file vengono gestiti da un server centrale, chiamato repository.Ciascun utente può creare una o più copie di lavoro

Il commitUna volta completate le modifice, l’utente le invia al serverIl software confronta i file e produce una nuova revisione.

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 25 / 45

Page 26: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Come funziona il VCS 2/2

L’updatel’utente confronta i propri file col repositoryNormalmente i file vengono fusi (merge)

La risoluzione di conflittiSe ci sono conflitti, li deve risolvere l’utente, poi eseguire il commit

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 26 / 45

Page 27: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Subversion (SVN)

CaratteristicheGestisce le versionianche delle cartelleForza a immettere uncommentoBackup e ripristinofacile del repositoryGestione efficente deifile binariIl commit è unaoperazione atomicaComandi avanzati dianalisi dati

Protocolli supportatiFile (cartella locale)WebDAV (http/https)ssh

kdesvn

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 27 / 45

Page 28: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Subversion per Windows: TortoiseSVN

TortoiseSVNClient SVN perWindowsSi integra in EsploraRisorseInteramente gestitoda menùcontestuale

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 28 / 45

Page 29: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Distribuire il proprio programma

l’ultimo passoNon sempre è sufficiente distribuire i sorgenticompressiPuò essere necessario configurare il sistema doveinstallareProblema della gestione delle dipendenzeIntegrazione con il sistema operativo

Il fattore chiave: l’utenteQuante installazioni si prevedono?Chi esegue l’installazione? Che esperienza ha?Che canale di distribuzione si vuole usare?

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 29 / 45

Page 30: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

CPack

CPack...É il “fratello” di CMake perla pacchettizzazioneConsente con una sintassiunificata di crearepacchetti per differentipiattaforme e sistemi diinstallazionePuò funzionare con osenza CMake

...ma...Non funziona ancora benecome CMake, è completo soloda CMake 2.6

Cosa produce

TGZ tar + gzip

STGZ tar.gz auto-estraenti

NSIS Script NSIS

ZIP zip

TBZ2 tar + bzip2

TZ tar + Z

PackageMaker Mac OSX PackageMaker.

OSXX11 Mac OSX X11 Bundle.

RPM Red Hat Package

DEB Debian Package

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 30 / 45

Page 31: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

NSIS Installer

Linguaggio di scripting per installatori WindowsNato per fare l’installatore di WinAmpPotente e flessibile

Cosa faCrea eseguibiliautoinstallantiEsegue altri programmiImposta chiavi del registrodi sistemaCrea un disinstallatoreautomaticoGestisce la licenzaE molto altro...

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 31 / 45

Page 32: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

NSIS: script di esempio

Example1.nsi

1; Semplice script NSIS2; Chiede un percorso di installazione ,3; poi ci installa una copia di se stesso4

5Name "Example1" ; Nome dell’ installatore6OutFile "example1.exe" ; Il nome del file pacchetto7InstallDir $DESKTOP\Example1 ; Cartella di installazione di default8RequestExecutionLevel user ; Richiede i privilegi su Windows Vista9Page directory ; Imposta le pagine da installare10Page instfiles11Section " Installazione " ; Cosa installare12SetOutPath $INSTDIR ; Percorso di destinazione13File example1.nsi ; File da installare14SectionEnd ; Fine sezione

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 32 / 45

Page 33: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

NSIS: Example1 in azione

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 33 / 45

Page 34: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

I pacchetti: la soluzione Linux

I pacchetti in LinuxI programmi vengonoseparati dalle librerieLa gerarchia delle cartelleè stabilita da uno standard(FHS - FilesystemHierarchy Standard)Ogni pacchetto contiene iriferimenti alle propriedipendenzeI pacchetti vengono raccoltie distribuiti da server inrete (repository)

Vantaggi

Nessuna duplicazione dilibrerie

Unico sistema perinstallazione eaggiornamento

Reperibilità e sicurezza perl’utente

Svantaggi

Più complesso per losviluppatore

Più soluzioni, incompatibili traloro

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 34 / 45

Page 35: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

RPM - Red Hat Package Manager

Cosa serveil pacchetto tar.gz con i sorgenticompilabiliUn makefile con le istruzioni diinstallazioneUn file nomepacchetto.spec con:

1 Nome e info pacchetto2 Versione3 Dipendenze4 Istruzioni di compilazione

Come si creaUsando rpmbuild.

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 35 / 45

Page 36: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

DEB - Debian Package

Cosa serveI sorgenti in unacartellaUna sotto-cartelladebian con i file:

1 changelog2 README3 README.Debian4 copyright5 control6 rules

Come si creaUsando i pacchetti debuild,debhepler e dh-make.dh_make è in grado di creareautomaticamente i file necessaridebhepler ha delle utility pergestirli in maniera automatizzatadebuild genera il pacchetto

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 36 / 45

Page 37: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Riferimenti sul C++

Cplusplus.comhttp://www.cplusplus.com/

C++ su WikipediaInglese: http://en.wikipedia.org/wiki/C%2B%2BItaliano: http://it.wikipedia.org/wiki/C%2B%2B

Brian W. Kernighan, Dennis M. RitchieIl linguaggio C. Principi di programmazione e manuale di riferimento.Nuova edizione italiana, Pearson Education Italia, 2004 (ISBN88-7192-200-X)

Bjarne StroustrupC++ Linguaggio, libreria standard, principi di programmazione. IIIedizione, Pearson Education Italia, 2000 (ISBN 88-7192-078-3)

Bruce Eckel, Thinking in C++http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 37 / 45

Page 38: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Riferimenti sui compilatori

GCC Home Pagehttp://gcc.gnu.org/

William von HagenThe Definitive Guide to GCC, Second Edition, Apress, 2006 (ISBN1-59059-585-8)

MinGWhttp://www.wxwidgets.org/wiki/index.php/Supported_Platforms

Dev-C++http://www.bloodshed.net/devcpp.html

OpenWatcomhttp://www.openwatcom.org/index.php/Main_Page

Microsoft Visual Studio C++ Expresshttp://www.microsoft.com/express/vc/

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 38 / 45

Page 39: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Riferimenti sugli IDE

Eclipsehttp://www.eclipse.org/

kdevelophttp://www.kdevelop.org/

Anjutahttp://anjuta.sourceforge.net/downloads

XCodehttp://developer.apple.com/leopard/overview/

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 39 / 45

Page 40: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Riferimenti sulla gestione progetti

GNU Makehttp://www.gnu.org/software/make/

CMakehttp://www.cmake.org/

Ken Martin, Bill HoffmanMastering CMake 4th Edition, Kitware, Inc., 2008 (ISBN978-1930934207)

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 40 / 45

Page 41: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Riferimenti sulle librerie grafiche 1/2

wxWidgets Home Pagehttp://www.wxwidgets.org/

Presentazione sulle wxWidgetshttp://www.montellug.it/modules/mydownloads/visit.php?cid=6&lid=45

Julian Smart, Kevin Hock, Stefan CsomorCross-Platform GUI Programming with wxWidgets, Prentice Hall, 2006(ISBN 0-13-147381-6)

GTK+http://www.gtk.org/

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 41 / 45

Page 42: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Riferimenti sulle librerie grafiche 2/2

Qthttp://trolltech.com/

Alan Ezust, Paul EzustAn Introduction to Design Patterns in C++ with Qt 4, Prentice Hall, 2006(ISBN 978-0131879058)Pubblicato online:http://cartan.cas.suffolk.edu/oopdocbook/opensource/index.html

Tutorial Qt in italianohttp://www.digitalfanatics.org/projects/qt_tutorial/it/index.html

Licenze dei frameworkwxWidgets: http://www.wxwidgets.org/about/newlicen.htmQt: http://trolltech.com/products/appdev/licensingGTK+: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 42 / 45

Page 43: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Riferimenti sul controllo di versione 1/2

Il controllo di versionehttp://it.wikipedia.org/wiki/Controllo_versione

Subversionhttp://subversion.tigris.org/

Client Subversionhttp://en.wikipedia.org/wiki/Comparison_of_Subversion_clients

TortoiseSVNhttp://tortoisesvn.net/

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 43 / 45

Page 44: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Riferimenti sul controllo di versione 2/2

CVShttp://ximbiot.com/cvs/

Bazaarhttp://bazaar-vcs.org/

Mercurialhttp://www.selenic.com/mercurial/wiki/

Githttp://git.or.cz/

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 44 / 45

Page 45: Sviluppo C++ multi-piattaforma con strumenti Open Source · kdevelop IDE di KDE, multi-linguaggio, orientato allo sviluppo KDE/Qt. Anjuta IDE di Gnome, multi-linguaggio, oriantato

Riferimenti sulla pacchettizzazione

CPackhttp://www.cmake.org/Wiki/CMake:Packaging_With_CPack

NSIShttp://nsis.sourceforge.net/Main_Page

Maximum RPMhttp://www.redhat.com/docs/books/max-rpm/max-rpm-html/

Wikipedia RPMhttp://it.wikipedia.org/wiki/RPM_Package_Manager

Pacchetti Debianhttp://www.debian.org/doc/FAQ/ch-pkg_basics

Debian New Maintainers’ Guidehttp://www.debian.org/doc/maint-guide/

Davide Rondini (MontelLUG) Multi-piattaforma Open Source 25/10/2008 - Castelfranco V.to 45 / 45