2009-03-11 7 views
15

Sto cercando alternative per la mia casella attuale e Mac OS X sembra molto interessante.Soluzione completa per scrivere un'applicazione per Mac OS X in C++

La mia area di interesse principale è la programmazione in C++. Attualmente sto usando Eclipse + CDT e g ++ per creare il mio software; a volte è KDevelop.

So che IDE primario per Mac è Xcode e la lingua principale è Objective-C. Vorrei evitare di imparare Objective-C se possibile. Ho anche sentito/letto che ci sono alcuni problemi nell'accesso alle API di Mac OS X da C++.

Quindi la mia domanda: qual è la soluzione completa per lo sviluppo/debug/testing di applicazioni C++ che accedono a tutti gli aspetti dell'hardware (UI, audio, video/video accelerato, ecc.) Per Mac OS X?

Modifica: come si confronta Xcode con la combo Eclipse + CDT? Se questo confronto è del tutto possibile ...

+0

XCode gestisce perfettamente C++.Penso che sia un po 'eccessivo affermare che l'Objective-C è la lingua principale. Objective-C sarebbe la lingua principale per lo sviluppo della porzione GUI di un'applicazione ma non necessaria. –

+0

@Martin, l'Objective-C sarebbe richiesto per un'applicazione Cocoa, se non sbaglio. –

+1

btw. Leggo anche che Objective-C è un linguaggio di nicchia usato solo da Apple; vale davvero la pena di imparare tutto questo? –

risposta

13

Se si desidera utilizzare C++ anziché Objective-C e si desidera comunque evitare un livello intermedio di librerie (come QT), è possibile utilizzare Carbon.

Vorrei usare XCode anziché Eclipse semplicemente perché Eclipse è molto più lento quando si ha a che fare con la programmazione C/C++ (compilazione, debug, testing).

Quando ho iniziato a programmare su Mac OS X, ero nella stessa pagina in cui ci si trova ora. Ho pensato che fosse meglio attenersi alla lingua che conoscevo (C++) e utilizzare una vecchia libreria (Carbon). Per qualche ragione che non ricordo ora, mi sono imposto in Cocoa (Objective-C). Guardando indietro, penso che sia stata una buona cosa perché:

  1. Objective-C non è fondamentalmente diverso da C++
  2. cacao è migliore, più veloce e più semplice di carbonio
  3. iPhone Dev è esclusivamente cacao (Carbon è non supportato)
+17

-1 Per lo sviluppo di nuove applicazioni, andare su Carbon è davvero un cattivo consiglio. –

+10

Leggi la domanda. Che cosa utilizzeresti se desideri codificare le applicazioni ** C++ ** GUI in Mac OS X? –

0

Non l'ho usato su OSX da solo (lo posso consigliare su Windows), ma il codice :: Blocks C++ IDE è implementato usando e supporta, piattaforma libreria wxWidgets GUI. È supportato su OSX - vedi this page.

5

A meno che non si stia utilizzando un livello intermedio come QT, penso che si sia praticamente bloccati con l'Objective C per interfacciarsi con parti dell'API come la GUI in quanto è la loro lingua nativa.

Detto questo, è stato detto che è possibile combinare facilmente codice Objective-C e codice C++ in modo che si possa ancora scrivere la maggior parte della propria applicazione in C++.

Sono principalmente un programmatore C++ ma mi diletto sempre in altre lingue e ho avuto un gioco con XCode (sì, ho un Mac). Mi è piaciuto, è un po 'diverso ma come un modo per inchiodare una OS X GUI è superbo e il resto è tra te e il tuo editor preferito se non ti piace molto XCode.

+0

La mia idea è che Linux, che uso ora, sia molto fratturato/diviso quando si tratta di implementazioni e API della GUI. Mac sembra una piattaforma molto promettente. –

+0

Sono praticamente sulla stessa barca: sono un utente e sviluppatore Unix/Linux da lungo tempo, ma non sono mai stato tentato di scrivere app GUI per nessuno dei due. E OS X sembra essere il migliore di entrambi i mondi con una superba GUI e Unix consistenti sotto. –

0

Consiglierei di attenersi a qualsiasi IDE si sia più a proprio agio. Personalmente, ho odiato Xcode la prima volta che l'ho usato e ho rifiutato di rinunciare ad Eclipse. Dopo alcuni giorni, mi sono scaldato su Xcode e non mi dispiace utilizzarlo di tanto in tanto. Tuttavia, utilizzo ancora Eclipse ogni volta che è possibile.

Basta ricordare che non è possibile scrivere applicazioni Cocoa utilizzando solo C++, è necessario immergersi in Obj-C per questo. Le applicazioni di carbonio non sembrano o si comportano come un'app Cocoa. Alla maggior parte delle persone non importa, ma è qualcosa su cui riflettere. Sono saltato in Obj-C da java/C# senza problemi. Il linguaggio si sta un po 'abituando ma non è molto difficile.

7

L'obiettivo-C non è così difficile. Se conosci il C++, ci vorranno un giorno o tre di sforzi applicati per imparare le convenzioni.

Le API e le convenzioni Cocoa impiegano più tempo, ma quelle arrivano in tempo.

Buona fortuna!

2

Non è un problema utilizzare gcc o g ++ da OS X. L'installazione di XCode fornisce comunque questi compilatori e, se lo si desidera, è possibile caricare un'istanza di x server e far funzionare KDE. Mi piace però l'editor XCode. Eclipse funziona anche con OS X, quindi dovresti essere in grado di utilizzare il tuo ambiente attuale.

Ho usato una casella OS X per cross-compilare il codice C da arch di PPC a ARM arch prima, senza problemi.È solo un altro sistema in stile * nix, quindi tutti gli strumenti con cui hai familiarità esisteranno già e, in caso contrario, utilizza fink o macports per ottenerli tu stesso.

Inoltre, se si desidera utilizzare C++ per sviluppare app GUI OS X, è possibile utilizzare Carbon invece di Cocoa. È una scelta perfettamente fattibile, solo leggermente deprecata.

+0

Con l'introduzione di LGPLed QT sono sempre più desideroso di usarlo. –

+3

L'apprendimento del carbonio è una cattiva idea. Tutto ciò per cui esiste un equivalente di cacao è deprecato in modo efficace e l'apis di carbonio non sarà mai pulito a 64 bit. È molto meglio usare Objective-C++ per interfacciarsi con Cocoa e usare Carbon solo dove assolutamente necessario. – user57368

10

Dovresti non evitare di imparare Objective-C e Cocoa. In realtà dovrebbe essere la prima cosa che fai. A meno che tu non abbia uno sfondo solido in Smalltalk, è improbabile che tu sia stato esposto a un grande (set di) framework che è altrettanto ben progettato.

2

Carbon su Mac OS X è deprecato in modo efficace - non supporta e non supporta le app a 64 bit.

Se davvero si vuole veramente utilizzare C++, utilizzare Qt Creator

che ora è libero e l'SDK Trolltech include Qt 4.5, che mentre è un C++ quadro si utilizza internamente Objective-C di interagire con MAC OS X , quindi non sei limitato da Carbon.

Lo svantaggio è che le librerie trolltech non sono standard sul mac, è necessario fornire loro l'app.

5

Ho giocato con Objective-C++ per scrivere l'interfaccia utente, rendendo più semplice l'uso del C++ per scrivere il back-end dell'applicazione. Sembra funzionare abbastanza bene per me. Objective-C & Objective-C++ sono abbastanza facili da imparare e questo mi permette di continuare ad usare la mia conoscenza C++, che ha conquistato a fatica.

0

Se si desidera utilizzare C++ su Mac OS X, utilizzare qualcosa come SDL/wxWidgets/Qt.

C'è l'opzione di combinare Objective-C con C++, chiamato Objective-C++. Potresti usarlo per tutti i tuoi oggetti di modello e usare solo Objective-C per il materiale, che non è possibile senza il framework Foundation.

Come ultima opzione, mi viene in mente Carbon. Si tratta di un framework nativo utilizzato negli orari pre-OSX ma eseguito su Mac OS X. Il problema è che non è supportato per le nuove tecnologie e penso che la prossima versione di OS X, Snow Leopard, non supporterà a tutti.

Apple dice:

carbonio consente C/sviluppatori C++ per sfruttare le funzionalità di Mac OS X, compresa la grafica Quartz 2D biblioteca, una di gestione degli eventi efficace meccanismo, e multiprocessing supporto . Inoltre, API altro standard industriale C/C++ sono disponibili agli sviluppatori carbonio, fornendo l'accesso a servizi come sistema OpenGL disegno, i microkernel Mach e BSD sistema operativo servizi.

Non aspettatevi che le applicazioni Carbon abbiano un aspetto nativo al 100% ed è molto più complicato per la programmazione rispetto a Cocoa.

Tuttavia, suggerisco learning Objective-C, non è difficile e ci sono molti potenti framework come CoreData, CoreGraphics e simili.

1

Sono d'accordo con Pablo Santa Cruz e vorrei aggiungere che è banale mescolare Objective-C con C++ nella stessa app (e lo stesso file sorgente). Questo è indicato come Objective-C++ e discusso in this article.

XCode compila con GCC in modo da avere l'obiettivo C, C e C++ pronto a portata di mano.

0

Per alcuni piccoli progetti di hobby e un'app per iPhone che sto realizzando, sto usando un mix di C++ oggettivo e C++ "reale". XCode supporta la miscelazione di entrambe le lingue abbastanza bene. Io uso C++ oggettivo C++ per l'interfaccia utente e come strato sottile tra i framework OSX e il mio codice. Finora, questo è risultato essere un ottimo modo di lavorare.

+0

Oh, e come una piccola aggiunta alla mia risposta: Vale la pena di imparare ObjC/ObjC++! Il linguaggio è facile da imparare, potente e consente alcuni costrutti molto interessanti se usato con i framework OSX. I programmi OSX possono essere tanto lucidi all'interno quanto guardare all'esterno. – Emiel

0

L'ambiente di sviluppo che sto usando in questo momento per lo sviluppo nel Mac è QTCreator che è un IDE gratuito per lo sviluppo in QT con gcc come compilatore. Offre tutte le funzionalità di cui ho bisogno ed è multipiattaforma (un requisito dell'applicazione che sto sviluppando).

Devo dire che sono rimasto abbastanza impressionato. Non avevo grandi speranze per questo tipo di focalizzato (specificamente progettato per QT) e recente IDE. L'ambiente è semplice ma potente (inclusa la modifica della GUI) e ha il miglior completamento del codice che abbia mai visto. È un gioco da ragazzi in questo ambiente e non perdere un po 'di Visual Studio.

Davvero vale la pena provare.

2

C++ funziona molto bene con Xcode. Se vuoi il cacao, puoi imparare una quantità minima (e intendo davvero minima) di Obj-C per il livello gui e avere la maggior parte del tuo codice in C++.

Un'altra opzione è l'utilizzo di uno dei framework di linguaggio di scripting per l'aggancio all'API Cocoa (come PyObjc) e la maggior parte della logica in C++.

La terza e ultima opzione utilizza un kit GUI multipiattaforma come Qt4. Se c'è il desiderio di rendere le tue librerie multi piattaforma, questa sarebbe la strada da percorrere.

Raccomanderei di andare con il carbonio. È sicuramente una bestia morente. Puoi anche utilizzare combinazioni di quanto sopra fornendo una libreria con il tuo codice C++ e creando interfacce utente specifiche per interfaccia utente che le colleghino.