2009-03-26 19 views
8

Sto avviando un progetto cross-platform open source in C++. Il mio ambiente di sviluppo è Linux. Potrebbero esserci altri sviluppatori che si sviluppano anche da piattaforme diverse. Quindi ho bisogno di aiuto per iniziare con la configurazione e l'ambiente di sviluppo, in modo che tutti gli sviluppatori di piattaforme multiple possano svilupparsi facilmente.Best practice per un'applicazione opensource portatile C++

seguito sono le mie domande

  1. Compiler: Ho intenzione di utilizzare g ++ e ho sentito che è cross platform. E 'una buona scelta?
  2. Crea file: ho visto codice :: Blocchi editor e genera make file al volo e non è necessario scriverne uno manualmente. È questa la migliore pratica o devo creare i file make?
  3. Quali sono le altre impostazioni da utilizzare per lo sviluppo di applicazioni multipiattaforma?

Qualche idea?

Modifica

Grazie per le risposte. Un'altra domanda.

Realizzate i makefile a mano? O c'è qualche strumento che può generarlo?

+0

Come multipiattaforma? (come in, quali piattaforme). GUI o non-GUI? –

+0

Una parte sarà una libreria condivisa. E, naturalmente, la GUI sarà lì. –

risposta

7

La cosa più importante per il tuo progetto è raggiungere la portabilità. Dovrebbe essere facile creare & eseguito per tutti.

GCC (g ++) è davvero il compilatore di scelta. Viene dal mondo opensource ed è quindi più largamente adottato da esso.

Tuttavia, un semplice Makefile non lo taglia.. Generarlo usando CodeBlocks o qualsiasi altro IDE ha un problema: a causa della loro piattaforma, gli altri sviluppatori probabilmente dovranno generare il proprio, ma non avranno necessariamente CodeBlocks a portata di mano, o semplicemente non vogliono usarlo.

Esistono diversi sistemi di compilazione multipiattaforma, che sono indipendenti dall'IDE. Alcuni di loro creano Makefile, altri non usano make ma si costruiscono da soli.

  • Il sistema di build più utilizzato è Autotools. Tuttavia, è difficile imparare, ingombrato, e un dolore generale nel culo.
  • Da molte altre scelte, Io suggerisco Waf. È già dimostrato da numerosi progetti open source di grandi dimensioni, XMMS2 è un buon esempio (sebbene non sia un progetto molto popolare, ha una grande build con molti plugin e build su molte piattaforme tra cui OS X e Windows). Sebbene il waf non sia adottato in modo molto ampio, è pensato per essere fornito con la fonte e facile da configurare. La mia raccomandazione per te.

Edit: per iniziare con il progetto Open Source, ho anche raccomandare this book da Karl Fogel (disponibile per la lettura on-line). Divertiti!

+0

Grazie per la risposta. –

1

Compilatore: Ho intenzione di utilizzare g ++ e ho sentito che è multipiattaforma. E 'una buona scelta?

Sì, ma quale versione? Avete una lista di problemi noti per la versione che intendete utilizzare?

Crea file: ho visto l'editor di Code :: Blocks e genera i file make al volo e non è necessario scriverne uno manualmente. È questa la migliore pratica o devo creare i file make?

Una scelta classica. Probabilmente avrai bisogno di modificarli quando il progetto cresce.

Quali sono le altre impostazioni da utilizzare per lo sviluppo di applicazioni multipiattaforma?

Una porta g ++/makefile è disponibile per la piattaforma principale. Quindi, dopo esserti assicurato che non stai utilizzando API o costrutti specifici per piattaforma, dovresti essere a posto.

E i seguenti?

  • Librerie di terze parti? Assicurati di non cadere per una piattaforma specifica.
  • problemi di licenza (il codice e altri)
  • SCM
+0

Ho l'ultima versione di G ++. Installato usando il gestore di pacchetti in Ubuntu. –

+0

Non ho davvero bisogno di saperlo, ma dovresti :) Assicurati di annotare le versioni degli strumenti che stai utilizzando. Puoi risparmiare un sacco di dolore nei prossimi giorni. – dirkgently

2

A seconda delle piattaforme specifiche, Qt può contenere le risposte. Soprattutto con la nuova licenza.

+0

Qt e qmake. Lo raccomando anche su wxWidgets, che è propagato da CodeBlocks. – ypnos

2
  • Iniziare a costruire su più piattaforme ora: espone i problemi in anticipo.
  • Se ti importa solo di Linux e Mac OS X, g ++ dovrebbe andare bene. Sono disponibili vari IDE e sistemi di compilazione. Potresti prendere in considerazione l'utilizzo di autotools per dare una mano con il supporto della configurazione.
  • Se si desidera eseguire il targeting di Windows, diventa un po 'più complicato. Puoi usare cygwin e/o mingw, ma a volte può essere complicato. Vari progetti utilizzano sistemi di configurazione e di configurazione multipiattaforma come CMake per occuparsi di molti problemi.
3

Il compilatore GNU C++ è una relativamente buona scelta per il lavoro multipiattaforma, tranne che su Windows solo una versione relativamente vecchio (3.4) è supportato nativamente. È in corso il lavoro per portare una serie 4.x a Windows, ma finora non è pronta per la prima serata.

Piuttosto che concentrarsi su quale compilatore utilizzare, preferisco concentrarsi su quale lingua utilizzare. Scrivere standard C++ ANSI farà molto per rendere il codice crossplatform. Per quanto possibile, nascondere il comportamento specifico della piattaforma dietro un buon toolkit, come Qt.

Per ambienti di compilazione multipiattaforma, questo può dipendere dal kit di strumenti che si utilizza. Qt ha QMake, che è relativamente buono. CMake è un'altra scelta interessante. Eviterei Autotools, dato che ha una portabilità molto scarsa al di fuori di UNIX - usare Autotools su Win32 è molto spesso il tormento dei dannati.

Infine, iniziare a lavorare su più piattaforme ora. VMware è inestimabile per qualcosa di simile. Ottieni il tuo codice per compilare su Linux, su FreeBSD e su Windows. Se riesci a raggiungere questi tre obiettivi, il passaggio ad altre piattaforme sarà enormemente più facile in futuro.