Domanda

Quale sarebbe il modo migliore per scrivere Objective-C sulla piattaforma Windows?

Cygwin e GCC?C'è un modo per integrarlo in qualche modo in Visual Studio?

In questo senso, ci sono suggerimenti su come collegare e utilizzare Windows SDK per qualcosa di simile.È una bestia diversa, ma so che posso scrivere assembly e collegamenti nelle DLL di Windows dandomi accessibilità a quelle chiamate, ma non so come farlo senza cercare su Google e ottenere indicazioni frammentarie.

Qualcuno è a conoscenza di una buona risorsa online o di libri per fare o spiegare questo tipo di cose?

È stato utile?

Soluzione

Espandendo le due risposte precedenti, se vuoi solo Objective-C ma non nessuno dei framework Cocoa, allora gcc funzionerà su qualsiasi piattaforma.Puoi usarlo tramite Cygwin o ottenere MinGW.Tuttavia, se desideri i framework Cocoa, o almeno un sottoinsieme ragionevole di essi, allora GNUStep e Cocotron sono la soluzione migliore.

Cocotron implementa molte cose che GNUStep non implementa, come CoreGraphics e CoreData, anche se non posso garantire quanto sia completa la loro implementazione su un framework specifico.Il loro scopo è mantenere Cocotron aggiornato con l'ultima versione di OS X in modo che qualsiasi programma OS X utilizzabile possa essere eseguito su Windows.Poiché GNUStep utilizza in genere l'ultima versione di gcc, aggiungono anche il supporto per Objective-C++ e molte funzionalità di Objective-C 2.0.

Non ho testato queste funzionalità con GNUStep, ma se usi una versione sufficientemente nuova di gcc, potresti essere in grado di usarle.Non ero in grado di utilizzare Objective-C++ con GNUStep alcuni anni fa.Tuttavia, GNUStep può essere compilato praticamente da qualsiasi piattaforma.Cocotron è un progetto molto incentrato sul mac.Sebbene sia probabilmente possibile compilarlo su altre piattaforme, si tratta di file di progetto XCode, non di makefile, quindi puoi compilare i suoi framework solo su OS X.Viene inoltre fornito con istruzioni sulla compilazione di app Windows su XCode, ma non su qualsiasi altra piattaforma.Fondamentalmente, è probabilmente possibile configurare un ambiente di sviluppo Windows per Cocotron, ma non è facile come configurarne uno per GNUStep e sarai da solo, quindi GNUStep è sicuramente la strada da percorrere se stai sviluppando su Windows invece che solo per Windows.

Per quello che vale, Cocotron è concesso in licenza con la licenza MIT e GNUStep è concesso in licenza con LGPL.

Altri suggerimenti

Voi Potere utilizzare Objective C all'interno dell'ambiente Windows.Se segui questi passaggi, dovrebbe funzionare correttamente:

  1. Visitare il Sito web GNUstep e scaricare GNUstep MSYS Subsystem (MSYS per GNUstep), GNUstep Core (Librerie per GNUstep) e GNUstep Devel
  2. Dopo aver scaricato questi file, installali in quest'ordine, altrimenti avrai problemi con la configurazione
  3. Navigare verso C:\GNUstep\GNUstep\System\Library\Headers\Foundation1 e garantirlo Foundation.h esiste
  4. Apri un prompt dei comandi ed esegui gcc -v per verificarlo GNUstep MSYS sia installato correttamente (se ricevi un errore di file non trovato, assicurati che il file bin cartella di GNUstep MSYS è nel tuo PATH)
  5. Usa questo semplice programma "Hello World" per testare la funzionalità di GNUstep:

    #include <Foundation/Foundation.h>
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    
  6. Torna al prompt dei comandi e cd dove hai salvato il programma "Hello World" e poi compilalo:2

    gcc -o helloworld.exe <HELLOWORLD>.m -I /GNUstep/GNUstep/System/Library/Headers -L /GNUstep/GNUstep/System/Library/Libraries -std=c99 -lobjc -lgnustep-base -fconstant-string-class=NSConstantString
    
  7. Infine, dal prompt dei comandi, digitare helloworld per eseguirlo

Ti auguro il meglio e divertiti con Objective-C!


APPUNTI:

  1. Ho utilizzato il percorso di installazione predefinito: modifica di conseguenza la riga di comando
  2. Assicurati che il percorso della tua cartella sia simile al mio, altrimenti riceverai un errore

Anche:

Cocotron è un progetto open source che mira a implementare un'API Objective-C multipiattaforma simile a quella descritta dalla documentazione Cocoa di Apple Inc.Ciò include AppKit, Foundation, runtime Objective-C e API di supporto come CoreGraphics e CoreFoundation.

http://www.cocotron.org/

WinObjC?Windows Bridge per iOS (precedentemente noto come "Project Islandwood").

Windows Bridge per iOS (noto anche come WinObjC) è un progetto open source Microsoft che fornisce un ambiente di sviluppo Objective-C per Visual Studio/Windows.Inoltre, WinObjC fornisce supporto per la compatibilità dell'API iOS.Anche se il rilascio finale avverrà entro la fine dell'autunno (permettendo al bridge di sfruttare le nuove funzionalità degli strumenti fornite con il prossimo aggiornamento di Visual Studio 2015),

Il bridge è ora disponibile per la comunità open source nel suo stato attuale.Da qui all'autunno.Il bridge iOS come progetto open source sotto licenza MIT.Data l'ambizione del progetto, rendere semplice per gli sviluppatori iOS creare ed eseguire app su Windows.

Salmaan Ahmed ha un post approfondito su Windows Bridge per iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/ discutendo del compilatore, del runtime, dell'integrazione IDE e di cosa è e cosa non è il bridge.Meglio ancora, il codice sorgente per il bridge iOS è attivo GitHub proprio adesso.

Il bridge iOS supporta sia le app Windows 8.1 che quelle Windows 10 realizzate per architetture di processori x86 e x64 e presto aggiungeremo ottimizzazioni del compilatore e supporto per ARM, che aggiunge il supporto mobile.

Ho sentimenti contrastanti riguardo al progetto Cocotron.Sono contento che stiano rilasciando e condividendo il codice sorgente, ma non credo che stiano facendo le cose nel modo più semplice.

Esempi.
Apple ha rilasciato il codice sorgente al runtime di Objective-c, che include proprietà e Garbage Collection.Il progetto Cocotron tuttavia ha una propria implementazione del runtime object-c.Perché preoccuparsi di duplicare lo sforzo?Esiste anche un file di progetto di Visual Studio che può essere utilizzato per creare un file objc.dll.Oppure, se sei davvero pigro, puoi semplicemente copiare il file DLL da un'installazione di Safari su Windows.

Inoltre, non si sono preoccupati di sfruttare CoreFoundation, anch'esso open source di Apple.Ho pubblicato un domanda riguardo a questo ma non ho ricevuto risposta.

Penso che la migliore soluzione attuale sia prendere il codice sorgente da più fonti (Apple, CocoTron, GnuStep) e unirlo insieme a ciò di cui hai bisogno.Dovrai leggere molte fonti ma ne varrà la pena il risultato finale.

Sono consapevole che questo è un post molto vecchio, ma ho trovato una soluzione che è diventata disponibile solo più recentemente E abilita quasi tutte le funzionalità Objective-C 2.0 sulla piattaforma Windows.

Con l'avvento di gcc 4.6, il supporto per le funzionalità del linguaggio Objective-C 2.0 (blocchi, sintassi dei punti, proprietà sintetizzate, ecc.) è stato aggiunto al compilatore Objective-C (vedi le note di rilascio per tutti i dettagli).Anche il loro runtime è stato aggiornato per funzionare in modo quasi identico al runtime Objective-C 2.0 di Apple.In breve questo significa che (quasi) qualsiasi programma che verrà legittimamente compilato con Clang su un Mac compilerà anche con gcc 4.6 senza modifiche.

Come nota a margine, una funzionalità che non è disponibile sono i valori letterali dizionario/array/ecc poiché sono tutti codificati in Clang per utilizzare le classi NSDictionary, NSArray, NSNumber, ecc. di Apple.

Tuttavia, se sei felice di vivere senza le ampie strutture di Apple, puoi farlo.Come notato in altre risposte, GNUStep e Cocotron forniscono versioni modificate delle librerie di classi di Apple, oppure puoi scriverne di tue (la mia opzione preferita).

MinGW è un modo per ottenere GCC 4.6 sulla piattaforma Windows e può essere scaricato da Il sito web del MinGW.Assicurati che quando lo installi includi l'installazione di C, C++, Objective-C e Objective-C++.Sebbene facoltativo, suggerirei anche di installare l'ambiente MSYS.

Una volta installato, il sorgente Objective-C 2.0 può essere compilato con:

gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)

MinGW include anche il supporto per la compilazione di applicazioni Windows con GUI nativa con -mwindows bandiera.Per esempio:

g++ -mwindows MyFile.cpp

Non l'ho ancora provato, ma immagino che se avvolgi le tue classi Objective-C in Objective-C++ al livello più alto possibile, dovresti essere in grado di intrecciare con successo la GUI nativa di Windows C++ e Objective-C in un'unica applicazione Windows.

Guardare WinObjC:

https://github.com/Microsoft/WinObjC

È un progetto open source ufficiale di Microsoft che si integra con Visual Studio + Windows.

Se vuoi semplicemente sperimentare, c'è un compilatore Objective-C per .NET (Windows) qui: qckapp

Puoi ottenere un compilatore c obiettivo che funzionerà con Windows e funzionerà bene con Visual Studio 2008\2010 qui.

open-c flite

Basta scaricare la fonte più recente.Non è necessario compilare tutto CF-Lite, esiste una soluzione chiamata objc.sln.Dovrai correggere alcuni dei percorsi di inclusione, ma poi verrà creato perfettamente.È incluso anche un progetto di prova in modo da poter vedere alcuni file Objective-c .m compilati e funzionanti in Visual Studio.Una cosa triste è che funziona solo con Win32 e non con x64.C'è del codice assembly che dovrebbe essere scritto per x64 affinché lo supporti.

Un recente tentativo di portare Objective C 2.0 su Windows è il Soggettivo progetto.

Dal file Leggimi:

Soggettivo è un tentativo di portare l'obiettivo C 2.0 con supporto ARC a Windows.

Questo progetto è una forchetta di OBJC4-532.2, il runtime C obiettivo che viene fornito con OS X 10.8.5.La porta può essere incrociata su OS X utilizzando LLVM-Clang combinata con il linker MINGW.

Ci sono alcune limitazioni molte delle quali sono una questione di lavoro extra, mentre altri, come eccezioni e blocchi, dipendono da un lavoro più serio nei progetti di terze parti.Le limitazioni sono:

• Solo 32 bit: la versione a 64 bit è in corso

• Solo collegamento statico: il collegamento dinamico è in corso

• Nessuna chiusura/blocco - finché libdispatch non li supporta su Windows

• Nessuna eccezione - finché clang non le supporta su Windows

• Nessun GC vecchio stile - finché a qualcuno non interessa...

• Interni:Nessun vtables, nessun supporto GDB, solo semplice malloc, nessuna pre -ottimizzazione: alcune di queste cose saranno disponibili sotto la build a 64 bit.

• Attualmente è richiesto un compilatore clang con patch;La patch aggiunge -Fobjc -runtime = subj flag

Il progetto è disponibile su Github, e c'è anche a filo sul Gruppo Cocotron delineando alcuni dei progressi e dei problemi riscontrati.

Ottieni GNUStep Qui

Ottieni MINGW Qui

Installa Mingw Installa gnustep, quindi prova

Se hai dimestichezza con l'ambiente Visual Studio,

Piccolo progetto:JGASP con GCC Large Project:Cocotron

Ho sentito che ci sono emulatori, ma sono riuscito a trovare solo l'emulatore Apple II http://virtualapple.org/.Sembra limitato ai giochi.

Prima di tutto, dimenticalo GNUStep utensili.Nessuno dei due Responsabile del progettoProjectCenter può essere chiamato IDE.Con tutto il rispetto, sembra che ragazzi di GNUStep progetto sono bloccati alla fine degli anni '80 (che è quando Passo successivo apparso per la prima volta).

Vim

ctags supporta Objective-C da allora r771 (assicuratevi di scegliere la versione pre-release 5.9 e di aggiungere --langmap=ObjectiveC:.m.h alla riga di comando, vedere Qui), in modo da avere un completamento del codice/navigazione dei tag decente.

Eccone una breve come sull'aggiunta del supporto Objective-C al plugin della tagbar Vim.

Emacs

Lo stesso vale per etags fornito con Emacsen moderno, quindi puoi iniziare con Emacs Modalità Obiettivo C. YASnippet fornirà modelli utili:

YASnippet objc-mode

e se vuoi qualcosa di più intelligente di completamento del codice basato su tag di base, guarda questo domanda.

Eclisse

CDT supporta Makefileprogetti basati su:

enter image description here

- quindi tecnicamente puoi creare i tuoi progetti Objective-C fuori dagli schemi (su Windows avrai bisogno di Cygwin O MinGW catena di strumenti).L'unico problema è l'editor del codice che riporterà molti errori rispetto a ciò che ritiene sia puro C codice (il controllo del codice al volo può essere disattivato, ma comunque...).Se desideri un'evidenziazione corretta della sintassi, puoi aggiungere Eclim alla tua Eclisse e goditi tutte le buone caratteristiche di entrambi Eclisse E Vim (vedi sopra).

Un altro promettente Eclisse il plugin è Coloratore, ma non supporta ancora Objective-C.Sentiti libero di presentare una richiesta di funzionalità.

SlickModifica

SlickModifica, tra altre caratteristiche di un ottimo IDE, fa supporto Obiettivo-C.Anche se è abbastanza complesso da imparare (non così complesso come Emacs però), credo che questa sia la soluzione migliore a patto che non ti dispiaccia acquistarlo (il prezzo è abbastanza abbordabile).

Inoltre, ha un Plug-in Eclipse che può essere utilizzato come alternativa all'editor autonomo.

KDevelop

Si dice che esista un KDevelop toppa (15 anni, ma chi se ne frega?).Personalmente non penso KDevelop ha funzionalità superiori rispetto a Emacsen, quindi non mi prenderei la briga di provarlo.


Quanto sopra vale anche per lo sviluppo Objective-C su Linux, poiché tutti gli strumenti menzionati sono più o meno portabili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top