Quelle serait la meilleure façon d'écrire Objective-C sur la plate-forme Windows?
Cygwin et gcc? Existe-t-il un moyen d'intégrer cela en quelque sorte dans Visual Studio?
Dans ce sens - y a-t-il des suggestions sur la façon de se connecter et d'utiliser le SDK Windows pour quelque chose comme ça. C'est une bête différente, mais je sais que je peux écrire un assemblage et un lien dans les DLL Windows, ce qui me permet d'accéder à ces appels, mais je ne sais pas comment faire cela sans googler et obtenir des instructions fragmentaires.
Quelqu'un connaît-il une bonne ressource en ligne ou un livre pour faire ou expliquer ce genre de choses?
Réponses:
En développant les deux réponses précédentes, si vous voulez juste Objective-C mais pas l'un des frameworks Cocoa, alors gcc fonctionnera sur n'importe quelle plateforme. Vous pouvez l'utiliser via Cygwin ou obtenir MinGW. Cependant, si vous voulez les frameworks Cocoa, ou au moins un sous-ensemble raisonnable, alors GNUStep et Cocotron sont vos meilleurs paris.
Cocotron implémente beaucoup de choses que GNUStep ne fait pas, comme CoreGraphics et CoreData, bien que je ne puisse pas garantir à quel point leur implémentation est complète sur un cadre spécifique. Leur objectif est de maintenir Cocotron à jour avec la dernière version d'OS X afin que tout programme OS X viable puisse s'exécuter sur Windows. Étant donné que GNUStep utilise généralement la dernière version de gcc, ils ajoutent également la prise en charge d'Objective-C ++ et de nombreuses fonctionnalités d'Objective-C 2.0.
Je n'ai pas testé ces fonctionnalités avec GNUStep, mais si vous utilisez une version suffisamment nouvelle de gcc, vous pourrez peut-être les utiliser. Je n'ai pas pu utiliser Objective-C ++ avec GNUStep il y a quelques années. Cependant, GNUStep compile à partir de n'importe quelle plate-forme. Cocotron est un projet très centré sur le mac. Bien qu'il soit probablement possible de le compiler sur d'autres plates-formes, il contient des fichiers de projet XCode, pas des makefiles, donc vous ne pouvez compiler ses frameworks que sous OS X. Il est également livré avec des instructions sur la compilation d'applications Windows sur XCode, mais pas toute autre plateforme. Fondamentalement, il est probablement possible de configurer un environnement de développement Windows pour Cocotron, mais ce n'est pas aussi simple que d'en configurer un pour GNUStep, et vous serez seul, donc GNUStep est certainement la voie à suivre si vous développez sur Windows par opposition à seulement pour Windows.
Pour ce que ça vaut, Cocotron est sous licence MIT et GNUStep est sous licence LGPL.
la source
Vous pouvez utiliser Objective C dans l'environnement Windows. Si vous suivez ces étapes, cela devrait très bien fonctionner:
GNUstep MSYS Subsystem
(MSYS pour GNUstep),GNUstep Core
(Bibliothèques pour GNUstep) etGNUstep Devel
C:\GNUstep\GNUstep\System\Library\Headers\Foundation
1 et assurez-vous qu'ilFoundation.h
existegcc -v
pour vérifier qu'ilGNUstep MSYS
est correctement installé (si vous obtenez une erreur de fichier introuvable, assurez-vous que lebin
dossier de seGNUstep MSYS
trouve dans votrePATH
)Utilisez ce simple programme "Hello World" pour tester la fonctionnalité de GNUstep:
Revenez à l'invite de commande et
cd
à l'endroit où vous avez enregistré le programme "Hello World", puis compilez-le: 2Enfin, à l'invite de commandes, tapez
helloworld
pour l'exécuterBonne chance et amusez-vous avec Objective-C!
REMARQUES :
la source
gcc -o helloworld...
àc:\gnustep\bin\gcc -o helloworld...
et cela a fonctionné. L'alternative serait de modifier les variables d'environnement, ce que je n'ai pas fait car je ne faisais que voir l'objectif C. Merci à teshguru pour la réponse précise.Aussi:
http://www.cocotron.org/
la source
WinObjC? Windows Bridge pour iOS (anciennement appelé «Project Islandwood»).
Windows Bridge pour iOS (également appelé WinObjC) est un projet open source Microsoft qui fournit un environnement de développement Objective-C pour Visual Studio / Windows. En outre, WinObjC prend en charge la compatibilité des API iOS. Bien que la version finale se produise plus tard cet automne (permettant au pont de tirer parti des nouvelles capacités d'outils qui seront livrées avec la prochaine mise à jour de Visual Studio 2015),
Le pont est disponible pour la communauté open source maintenant dans son état actuel. Entre maintenant et l'automne. Le pont iOS en tant que projet open source sous licence MIT. Compte tenu de l'ambition du projet, faciliter la création et l'exécution d'applications sur Windows pour les développeurs iOS.
Salmaan Ahmed a un article détaillé sur le pont Windows pour iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/ discutant de la compilateur, runtime, intégration IDE et ce que le pont est et n'est pas. Mieux encore, le code source du pont iOS est actuellement en ligne sur GitHub.
Le pont iOS prend en charge les applications Windows 8.1 et Windows 10 conçues pour les architectures de processeur x86 et x64, et nous ajouterons bientôt des optimisations de compilateur et la prise en charge d'ARM, qui ajoute une prise en charge mobile.
la source
J'ai des sentiments mitigés sur le projet Cocotron. Je suis content qu'ils publient du code source et partagent, mais je ne pense pas qu'ils font les choses de la manière la plus simple.
Exemples.
Apple a publié le code source de l' exécution objective-c , qui comprend les propriétés et la récupération de place. Le projet Cocotron a cependant sa propre implémentation du runtime objective-c. Pourquoi prendre la peine de dupliquer l'effort? Il existe même un fichier de projet Visual Studio qui peut être utilisé pour créer un fichier objc.dll. Ou si vous êtes vraiment paresseux, vous pouvez simplement copier le fichier DLL à partir d'une installation de Safari sur Windows.
Ils n'ont pas non plus pris la peine de tirer parti de CoreFoundation, qui est également open source par Apple. J'ai posté une question à ce sujet mais je n'ai pas reçu de réponse.
Je pense que la meilleure solution actuelle est de prendre le code source de plusieurs sources (Apple, CocoTron, GnuStep) et de le fusionner ensemble pour ce dont vous avez besoin. Vous devrez lire beaucoup de sources mais cela vaudra le résultat final.
la source
Je suis conscient qu'il s'agit d'un très ancien article, mais j'ai trouvé une solution qui n'est devenue disponible que plus récemment ET active presque toutes les fonctionnalités d'Objective-C 2.0 sur la plate-forme Windows.
Avec l'avènement de gcc 4.6, la prise en charge des fonctionnalités du langage Objective-C 2.0 (blocs, syntaxe à points, propriétés synthétisées, etc.) a été ajoutée au compilateur Objective-C (voir les notes de publication pour plus de détails). Leur runtime a également été mis à jour pour fonctionner de manière presque identique au runtime Objective-C 2.0 d'Apple. En bref, cela signifie que (presque) tout programme qui compilera légitimement avec Clang sur un Mac compilera également avec gcc 4.6 sans modification.
En guise de remarque, une fonctionnalité qui n'est pas disponible est les littéraux dictionnaire / tableau / etc, car ils sont tous codés en dur dans Clang pour utiliser les classes NSDictionary, NSArray, NSNumber, etc. d'Apple.
Cependant, si vous êtes heureux de vivre sans les cadres étendus d'Apple, vous le pouvez. Comme indiqué dans d'autres réponses, GNUStep et Cocotron fournissent des versions modifiées des bibliothèques de classes d'Apple, ou vous pouvez écrire les vôtres (mon option préférée).
MinGW est un moyen d'obtenir GCC 4.6 sur la plate-forme Windows et peut être téléchargé à partir de site Web de MinGW . Assurez-vous que lorsque vous l'installez, vous incluez l'installation de C, C ++, Objective-C et Objective-C ++. Bien que facultatif, je suggère également d'installer l'environnement MSYS.
Une fois installée, la source d'Objective-C 2.0 peut être compilée avec:
gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)
MinGW inclut également la prise en charge de la compilation d'applications Windows GUI natives avec l'
-mwindows
indicateur. Par exemple:g++ -mwindows MyFile.cpp
Je ne l'ai pas encore essayé, mais j'imagine que si vous encapsulez vos classes Objective-C dans Objective-C ++ à la couche la plus élevée possible, vous devriez être en mesure de combiner avec succès l'interface graphique native Windows C ++ et Objective-C dans la même application Windows.
la source
Découvrez WinObjC :
https://github.com/Microsoft/WinObjC
Il s'agit d'un projet open source officiel de Microsoft qui s'intègre à Visual Studio + Windows.
la source
Si vous voulez juste expérimenter, il y a un compilateur Objective-C pour .NET (Windows) ici: qckapp
la source
Vous pouvez obtenir un compilateur objectif c qui fonctionnera avec Windows et jouera bien avec Visual Studio 2008 \ 2010 ici.
open-c flite
Téléchargez simplement la dernière source. Vous n'avez pas besoin de construire tout CF-Lite, il existe une solution appelée objc.sln. Vous devrez corriger quelques-uns des chemins d'inclusion, mais cela se construira très bien. Il y a même un projet de test inclus afin que vous puissiez voir certains fichiers objective-c .m en cours de compilation et de travail dans Visual Studio. Une chose triste est que cela ne fonctionne qu'avec Win32 et non x64. Il y a du code d'assembly qui devrait être écrit pour x64 pour qu'il prenne en charge cela.
la source
Une tentative récente de porter Objective C 2.0 vers Windows est le subjectif projet .
Du Readme:
Le projet est disponible sur Github , et il y a aussi un fil sur le groupe Cocotron décrivant certains des progrès et des problèmes rencontrés.
la source
Obtenez GNUStep ici
Obtenez MINGW ici
Installer MINGW Installer GNUStep puis tester
la source
Si vous êtes à l'aise avec l'environnement Visual Studio,
Petit projet: jGRASP avec gcc Grand projet: Cocotron
J'ai entendu dire qu'il y avait des émulateurs, mais je n'ai trouvé que l'émulateur Apple II http://virtualapple.org/ . Cela semble limité aux jeux.
la source
Tout d'abord, oubliez les outils GNUStep . Ni ProjectManager ni ProjectCenter ne peuvent être appelés IDE. Avec tout le respect que je vous dois , il semble que les gars du projet GNUStep soient coincés à la fin des années 80 (c'est à ce moment-là que NeXTSTEP est apparu).
Vigueur
ctags
prend en charge Objective-C depuis r771 (assurez-vous de choisir la version préliminaire 5.9 et de l'ajouter--langmap=ObjectiveC:.m.h
à la ligne de commande, voir ici ), vous aurez donc un acheminement de code / navigation décent.Voici un bref guide sur l'ajout de la prise en charge d'Objective-C au plugin Vim tagbar.
Emacs
De même pour
etags
livré avec Emacsen moderne, vous pouvez donc commencer avec Emacs Objectif Mode C . YASnippet fournira des modèles utiles:et si vous voulez quelque chose de plus intelligent que la complétion de code basée sur des balises de base , jetez un œil à cette question .
Éclipse
Le CDT soutient des
Makefile
projets basés sur:- donc techniquement, vous pouvez créer vos projets Objective-C hors de la boîte (sous Windows, vous aurez besoin de la chaîne d'outils Cygwin ou MinGW ). Le seul problème est l'éditeur de code qui signalera de nombreuses erreurs par rapport à ce qu'il pense être un code C pur (la vérification de code à la volée peut être désactivée, mais quand même ...). Si vous souhaitez mettre en évidence la syntaxe appropriée, vous pouvez ajouter Eclim à votre Eclipse et profiter de toutes les bonnes fonctionnalités d' Eclipse et de Vim (voir ci-dessus).
Un autre plugin Eclipse prometteur est Colorer , mais il ne prend pas encore en charge Objective-C. N'hésitez pas à déposer une demande de fonctionnalité.
SlickEdit
SlickEdit , entre autres fonctionnalités d'un excellent IDE, prend en charge Objective-C. Bien qu'il soit assez complexe à apprendre (pas aussi complexe qu'Emacs), je pense que c'est votre meilleure option à condition que cela ne vous dérange pas de l'acheter (le prix est assez abordable).
De plus, il dispose d'un plugin Eclipse qui peut être utilisé comme alternative à l'éditeur autonome.
KDevelop
La rumeur veut qu'il existe un patch KDevelop (15 ans, mais qui s'en soucie?). Personnellement , je ne pense pas que KDevelop soit supérieur aux fonctionnalités par rapport à Emacsen , donc je ne prendrais pas la peine de l'essayer.
Ce qui précède s'applique également au développement d'Objective-C sous Linux, car tous les outils mentionnés sont plus ou moins portables.
la source