2009-05-14 15 views
8

Lavoro in un team di sviluppatori, uno di noi lavora specificamente su Windows e lavoro principalmente in Mac OS X. Vogliamo sviluppare applicazioni basate su C sia in C++ o Objective-C, tuttavia, non sono veramente ben informato su come realizzare un progetto di sviluppo multipiattaforma.Sviluppo cross-platform Objective-C/C++

È possibile lavorare in C++ utilizzando Mac OS X? Ovviamente sono orientati verso Objective-C ma c'è altrettanto supporto per C++. Che dire dello sviluppo multipiattaforma in queste lingue? Vorrei usare qualcosa come boost e qualche tipo di libreria UI.

Qualcuno ha avuto esperienza nello sviluppo di piattaforme multiple eppure consente alle applicazioni di funzionare in modo nativo senza la necessità di una VM?

MODIFICA: C'è un sacco di risposte che voglio contrassegnare come corrette ora. Sembra che Qt sia la strada da seguire per svilupparlo in C++. Probabilmente questo sarà per * nix, OS X e Windows, quindi questa sarebbe la migliore opzione per noi personalmente. Se riesco a evitare di scrivere Objective-C così il team si attacca al C++, tanto meglio. Se devo scrivere la GUI in Objective-C e mixare e abbinare allora non è troppo disturbo neanche.

risposta

10

You could look at Qt. L'ho usato con successo su progetti Windows, Linux e Mac OSX.

+0

Questo è probabilmente il post più semplice ma ha più senso :) – Kezzer

1

È possibile lavorare in C++ utilizzando Mac OS X? Ovviamente sono orientati verso Objective-C ma c'è altrettanto supporto per C++.

Sì, c'è.

Si può fare praticamente tutto ciò che si desidera con C++ in OS X, ad esempio tutto ciò che si può fare con C++ su Linux. C'è il supporto per il compilatore C++ di gcc, le librerie C++, e tutto. Xcode fornisce supporto per lavorare con C++.

Si può anche mescolare C++ con oggettivo-C con Objective-C++ (nota, tuttavia, che questo non è portabile per il lavoro con la GUI).

E lo sviluppo multipiattaforma in queste lingue? Vorrei usare qualcosa come boost e qualche tipo di libreria UI.

Credo che la soluzione migliore sia QT.

È una libreria C++ stabile che è cross-platform (Windows, OSX, Linux e altro), è in circolazione da oltre un decennio, è ben supportato, con molte app commerciali scritte in esso (Skype, Adobe Photoshop Album) e una tonnellata di materiale open source scritto con esso (il desktop KDE per i principianti). Oltre alle informazioni della GUI fornisce molto di più (classi di contenitori, XML, connettività di database, ecc.).

È possibile sviluppare applicazioni Open Source e proprietarie (closed source) gratuitamente con l'ultimo QT, e la libreria è stata recentemente acquistata da NOKIA, un'enorme multinazionale, quindi non sta andando via in qualunque momento presto.

Oltre alla libreria, QT viene fornito anche con un IDE e un Visual Forms Designer (tutti gratuitamente).

Esistono anche altre librerie GUI cross-platform per C++ per OS X (wxWidgets, gtkmm e altri).

+0

wxWidget su Mac OS X riesce a fare semplici GUI con pulsanti e campi piuttosto bene, ma un'applicazione completa si sentirà molto non-Maccish con wxWidgets. La finestra di dialogo dei caratteri è un esempio. – dreamlax

11

Lavoro per una società di software che produce software per Mac OS X e Windows utilizzando C++, MFC e Objective-C.

Sì, è sicuramente possibile.

Probabilmente sarà meglio servirti se sviluppassi il "core" dell'applicazione in C++. In un'applicazione MVC, la parte C++ sarebbe il modello e probabilmente i controller. Per il codice che si interfaccia con la GUI e altre interfacce specifiche del sistema operativo, è necessario utilizzare le API native: Objective-C su Mac OS X e C# su Windows XP.

La cosa buona del Mac è che puoi compilare insieme C++ e Objective-C. Si può anche avere Objective-C++ dove C++ e Objective-C sono compilati nella stessa unità di compilazione. Sfortunatamente non puoi farlo con C# (c'è qualcosa chiamato Managed C++ che è una bestia diversa).

Eviterei i framework multipiattaforma come Qt e wxWidgets. Entrambi consentono di sviluppare applicazioni multipiattaforma, ma l'aspetto grafico di tali applicazioni è inferiore alla media. Ho una maggiore familiarità con wxWidgets, tuttavia, il suo design è fortemente orientato verso il paradigma di Windows dell'applicazione MFC.

Modifica 14 Maggio, 2009, 09:44 EST: Se Qt consente ora vero look and feel della piattaforma nativa, potrebbe essere una buona opzione. Non ho guardato l'ultima offerta in modo che tu possa voler guardare quella struttura prima di progettare la tua. Tale decisione dovrebbe essere presa dopo aver esaminato i risultati delle applicazioni e quanto sei comodo con i paradigmi di progettazione richiesti da Qt.

+2

In realtà, ora Qt può essere integrato con Cocoa, quindi l'aspetto grafico potrebbe essere assolutamente lo stesso. – Hejazzman

+0

Siamo praticamente sulla stessa pagina ;-) –

+0

Le grandi menti pensano allo stesso modo? Lo mismo? :) –

4

quello che uso, è una libreria comune scritta in C o C++ con tutte le funzionalità di base della vostra applicazione.

Diciamo che stai costruendo un gioco di solitario. Quindi avrai classi di base in una pura libreria C++ (per la maggior parte indipendente dalla piattaforma).

  • CoreSolitaire

Poi, si dovrà progetti di interfaccia utente separati, uno per ogni piattaforma che si desidera distribuire l'solitario su:

  • iSolitaire (Objective-C, MultiTouch base di cacao per iPhoneOS)
  • MacSolitaire (Objective-C, Cocoa Based per Mac OS X)
  • WinSolitaire (basato su C++, Win32 o C# per Windows ORM)
  • GSolitaire (C++, Gnome/GTK base per Linux/Unix)

E 'più di lavoro, ma, a mio parere, il prodotto risultante è sicuramente meglio di quello che si potrebbe ottenere utilizzando una piattaforma indipendente widget impostato come QT o wxWidgets.

Detto questo, se si intende distribuire il prodotto internamente in un'azienda in cui si ha il pieno controllo dell'ambiente di distribuzione e non si preoccupa molto di come si comporterà il prodotto risultante su piattaforme diverse, si potrebbe sicuramente usare un'API comune per tutto (QT, wxWidgets o qualsiasi altra cosa tu possa incontrare).

+1

In realtà, QT sembra assolutamente nativo in Windows e Linux (supporto per i temi KDE o GNOME). E con l'integrazione di Cocoa-QT, puoi usare QT e avere anche una Cocoa GUI per Mac, con un po 'più di lavoro. Beats utilizza 3 diversi kit di interfaccia utente. – Hejazzman

0

Qualcuno ha preso alcuna esperienza in sviluppo per più piattaforme ancora consentono alle applicazioni di funzionare nativamente senza la necessità di una macchina virtuale?

Leggermente. Assicurati di avvolgere tutto il codice specifico della piattaforma. In questo modo l'applicazione principale o la libreria non devono fare riferimento al codice specifico della piattaforma. Questo dovrebbe renderlo molto più semplice quando si esegue il porting su un'altra piattaforma.