Jaki byłby najlepszy sposób napisania Objective-C na platformie Windows?
Cygwin i gcc? Czy jest jakiś sposób, żeby jakoś zintegrować to z Visual Studio?
Wzdłuż tych linii - czy są jakieś sugestie, jak połączyć się i użyć zestawu Windows SDK do czegoś takiego. To inna bestia, ale wiem, że mogę pisać asembler i link w bibliotekach DLL systemu Windows, zapewniając mi dostęp do tych wywołań, ale nie wiem, jak to zrobić bez Google'a i uzyskiwania fragmentarycznych wskazówek.
Czy ktoś jest świadomy dobrego zasobu online lub książki do robienia lub wyjaśniania tego rodzaju rzeczy?
Odpowiedzi:
Rozwijając dwie poprzednie odpowiedzi, jeśli chcesz tylko Objective-C, ale nie żadnej z frameworków Cocoa, gcc będzie działać na dowolnej platformie. Możesz go użyć przez Cygwin lub uzyskać MinGW. Jeśli jednak potrzebujesz szkieletów Cocoa lub przynajmniej rozsądnego ich podzbioru, GNUStep i Cocotron są najlepszymi zakładami.
Cocotron implementuje wiele rzeczy, których GNUStep nie robi, takich jak CoreGraphics i CoreData, chociaż nie mogę poręczyć za to, jak kompletna jest ich implementacja w określonych ramach. Ich celem jest dbanie o aktualność Cocotron w najnowszej wersji OS X, aby każdy wykonalny program OS X mógł działać w systemie Windows. Ponieważ GNUStep zwykle używa najnowszej wersji gcc, dodają także obsługę Objective-C ++ i wiele funkcji Objective-C 2.0.
Nie testowałem tych funkcji z GNUStep, ale jeśli użyjesz wystarczająco nowej wersji gcc, możesz być w stanie ich użyć. Kilka lat temu nie mogłem używać Objective-C ++ z GNUStep. Jednak GNUStep kompiluje się z dowolnej platformy. Cocotron to bardzo mac-centryczny projekt. Chociaż prawdopodobnie można go skompilować na innych platformach, zawiera pliki projektu XCode, a nie makefile, więc możesz kompilować jego frameworki po wyjęciu z pudełka na OS X. Zawiera również instrukcje dotyczące kompilowania aplikacji Windows na XCode, ale nie każda inna platforma. Zasadniczo prawdopodobnie możliwe jest skonfigurowanie środowiska programistycznego Windows dla Cocotron, ale nie jest to tak proste jak skonfigurowanie środowiska GNUStep, a Ty będziesz działał na własną rękę, więc GNUStep jest zdecydowanie najlepszym rozwiązaniem, jeśli rozwijasz się na Windows, a nie tylko Windows.
Co do wartości, Cocotron jest licencjonowany na licencji MIT, a GNUStep na licencji LGPL.
źródło
Państwo może wykorzystać Objective C wewnątrz środowiska Windows. Jeśli wykonasz te kroki, powinno działać dobrze:
GNUstep MSYS Subsystem
(MSYS dla GNUstep),GNUstep Core
(Biblioteki dla GNUstep) iGNUstep Devel
C:\GNUstep\GNUstep\System\Library\Headers\Foundation
1 i upewnij się, żeFoundation.h
istniejegcc -v
aby sprawdzić, czyGNUstep MSYS
jest poprawnie zainstalowany (jeśli pojawi się błąd, że nie znaleziono pliku, upewnij się, żebin
folderGNUstep MSYS
znajduje się w twoimPATH
)Użyj tego prostego programu „Hello World”, aby przetestować funkcjonalność GNUstep:
Wróć do wiersza polecenia i
cd
do miejsca, w którym zapisałeś program „Hello World”, a następnie skompiluj go: 2Na koniec w wierszu polecenia wpisz,
helloworld
aby go uruchomićWszystkiego najlepszego i baw się dobrze z Objective-C!
UWAGI :
źródło
gcc -o helloworld...
sięc:\gnustep\bin\gcc -o helloworld...
i to zadziałało. Alternatywą byłoby zmodyfikowanie zmiennych środowiskowych, czego nie zrobiłem, ponieważ właśnie widziałem Cel C. Dzięki dzięki teshguru za odpowiedź na pytanie.Również:
http://www.cocotron.org/
źródło
WinObjC? Windows Bridge na iOS (wcześniej znany jako „Project Islandwood”).
Windows Bridge na iOS (zwany również WinObjC) to projekt Microsoft typu open source, który zapewnia środowisko programistyczne Objective-C dla Visual Studio / Windows. Ponadto WinObjC zapewnia obsługę kompatybilności z iOS API. Chociaż ostateczna wersja pojawi się później tej jesieni (umożliwiając mostowi skorzystanie z nowych możliwości narzędziowych, które zostaną dostarczone wraz z nadchodzącą aktualizacją Visual Studio 2015),
Most jest dostępny dla społeczności Open Source w jego obecnym stanie. Od teraz do upadku. Most iOS jako projekt typu open source na licencji MIT. Biorąc pod uwagę ambicje projektu, ułatwiając programistom iOS tworzenie i uruchamianie aplikacji w systemie Windows.
Salmaan Ahmed ma dogłębny post na temat Windows Bridge dla iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/ omawiający kompilator, środowisko wykonawcze, integracja IDE oraz to, czym jest most, a czym nie. Co najlepsze, kod źródłowy mostu iOS jest teraz dostępny na GitHub.
Most iOS obsługuje zarówno aplikacje Windows 8.1, jak i Windows 10 zbudowane dla architektur procesorów x86 i x64, a wkrótce dodamy optymalizacje kompilatora i obsługę ARM, która dodaje obsługę urządzeń mobilnych.
źródło
Mam mieszane uczucia na temat projektu Cocotron. Cieszę się, że udostępniają kod źródłowy i udostępniają, ale nie sądzę, że robią to w najprostszy sposób.
Przykłady
Apple wydało kod źródłowy do środowiska wykonawczego celu-c , który obejmuje właściwości i wyrzucanie elementów bezużytecznych. Projekt Cocotron ma jednak własną implementację środowiska uruchomieniowego celu-c. Po co zawracać sobie głowę powielaniem wysiłku? Istnieje nawet plik Visual Studio Project, którego można użyć do zbudowania pliku objc.dll. Lub jeśli jesteś naprawdę leniwy, możesz po prostu skopiować plik DLL z instalacji Safari w systemie Windows.
Nie zadali sobie również trudu, aby wykorzystać CoreFoundation, który jest również otwarty przez Apple. Zadałem pytanie na ten temat, ale nie otrzymałem odpowiedzi.
Myślę, że obecnie najlepszym rozwiązaniem jest pobranie kodu źródłowego z wielu źródeł (Apple, CocoTron, GnuStep) i połączenie go razem z tym, czego potrzebujesz. Będziesz musiał przeczytać wiele źródeł, ale będzie to warte efektu końcowego.
źródło
Wiem, że to bardzo stary post, ale znalazłem rozwiązanie, które stało się dostępne dopiero niedawno ORAZ umożliwia prawie wszystkie funkcje Objective-C 2.0 na platformie Windows.
Wraz z pojawieniem się gcc 4.6 do kompilatora Objective-C dodano obsługę funkcji języka Objective-C 2.0 (bloki, składnia kropek, właściwości syntezowane itp.) (Szczegółowe informacje znajdują się w uwagach do wydania ). Ich środowisko wykonawcze zostało również zaktualizowane, aby działało prawie identycznie jak własne środowisko wykonawcze Apple Objective-C 2.0. W skrócie oznacza to, że (prawie) każdy program, który zgodnie z prawem skompiluje się z Clangiem na Macu, również skompiluje się z gcc 4.6 bez modyfikacji.
Na marginesie, jedną z funkcji, która nie jest dostępna, są literały słownik / tablica / etc, ponieważ wszystkie są zapisane na stałe w Clang, aby używać klas Apple NSDictionary, NSArray, NSNumber itp.
Jeśli jednak lubisz żyć bez rozbudowanych platform Apple, możesz to zrobić. Jak zauważono w innych odpowiedziach, GNUStep i Cocotron zapewniają zmodyfikowane wersje bibliotek klas Apple, lub możesz napisać własną (moja preferowana opcja).
MinGW to jeden ze sposobów uzyskania GCC 4.6 na platformę Windows i można go pobrać ze strony internetowej MinGW . Upewnij się, że podczas instalacji dołączasz instalację C, C ++, Objective-C i Objective-C ++. Chociaż opcjonalne, sugerowałbym również instalację środowiska MSYS.
Po zainstalowaniu źródło Objective-C 2.0 można skompilować z:
gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)
MinGW obejmuje również obsługę kompilacji natywnych aplikacji Windows GUI z
-mwindows
flagą. Na przykład:g++ -mwindows MyFile.cpp
Jeszcze nie próbowałem tego, ale wyobrażam sobie, że jeśli opiszesz swoje klasy Objective-C w Objective-C ++ na najwyższej możliwej warstwie, powinieneś być w stanie skutecznie przeplatać natywny GUI Windows C ++ i Objective-C wszystko w jednej aplikacji Windows.
źródło
Sprawdź WinObjC :
https://github.com/Microsoft/WinObjC
Jest to oficjalny projekt open source firmy Microsoft, który integruje się z Visual Studio + Windows.
źródło
Jeśli chcesz po prostu poeksperymentować, jest tutaj kompilator Objective-C dla platformy .NET (Windows): qckapp
źródło
Możesz tutaj znaleźć kompilator z celem c, który będzie działał w systemie Windows i ładnie grał w Visual Studio 2008 \ 2010.
open-c flite
Wystarczy pobrać najnowsze źródło. Nie musisz budować całego CF-Lite, istnieje rozwiązanie o nazwie objc.sln. Będziesz musiał naprawić kilka ścieżek dołączania, ale wtedy wszystko będzie dobrze. Zawiera nawet projekt testowy, dzięki czemu można zobaczyć, jak niektóre pliki-c .m są kompilowane i pracują w Visual Studio. Smutne jest to, że działa tylko z Win32, a nie x64. Jest taki kod asemblera, który musiałby zostać napisany dla x64, aby go obsługiwał.
źródło
Ostatnia próba przeniesienia celu C 2.0 do systemu Windows to projekt subiektywny .
Z pliku Readme:
Projekt jest dostępny na Github , a grupa Cocotron zawiera także wątek opisujący niektóre postępy i napotkane problemy.
źródło
Uzyskaj GNUStep tutaj
Uzyskaj MINGW tutaj
Zainstaluj MINGW Zainstaluj GNUStep, a następnie przetestuj
źródło
Jeśli nie masz doświadczenia ze środowiskiem Visual Studio,
Mały projekt: jGRASP z gcc Duży projekt: Cocotron
Słyszałem, że są emulatory, ale mogłem znaleźć tylko emulator Apple II http://virtualapple.org/ . Wygląda na ograniczony do gier.
źródło
Przede wszystkim zapomnij o narzędziach GNUStep . Ani ProjectManager, ani ProjectCenter nie można nazwać IDE. Z całym szacunkiem, wygląda na to, że faceci z projektu GNUStep utknęli pod koniec lat 80-tych (kiedy to pojawił się NeXTSTEP ).
Wigor
ctags
obsługuje Objective-C od r771 (pamiętaj, aby wybrać wersję wstępną 5.9 i dodać--langmap=ObjectiveC:.m.h
do wiersza poleceń, patrz tutaj ), więc będziesz mieć przyzwoite uzupełnianie kodu / nawigację po tagach.Oto krótkie poradniki na temat dodawania obsługi Objective-C do wtyczki paska tagów Vima.
Emacs
To samo dotyczy
etags
dostarczany z nowoczesnym Emacsen, więc można zacząć Emacs Objective C Tryb . YASnippet zapewni przydatne szablony:a jeśli chcesz czegoś inteligentniejszego niż podstawowe uzupełnianie kodu oparte na tagach , spójrz na to pytanie .
Zaćmienie
CDT obsługuje
Makefile
projekty oparte na:- więc technicznie możesz zbudować swoje projekty Objective-C po wyjęciu z pudełka (w systemie Windows potrzebny będzie łańcuch narzędzi Cygwin lub MinGW ). Jedynym problemem jest edytor kodu, który zgłosi wiele błędów w porównaniu z tym, co uważa za czysty kod C (sprawdzanie kodu w locie można wyłączyć, ale nadal ...). Jeśli chcesz poprawnego podświetlania składni, możesz dodać Eclim do swojego Eclipse i cieszyć się wszystkimi dobrymi cechami Eclipse i Vima (patrz wyżej).
Kolejna obiecująca wtyczką Eclipse jest Colorer , ale jak dotąd nie obsługuje Objective-C. Możesz jednak poprosić o dodanie funkcji.
SlickEdit
SlickEdit , oprócz innych funkcji świetnego IDE, robi wsparcie Objective-C. Chociaż nauka jest dość skomplikowana (choć nie tak skomplikowana jak Emacs), uważam, że jest to najlepsza opcja, pod warunkiem, że nie masz nic przeciwko zakupowi (cena jest dość przystępna).
Dodatkowo ma wtyczkę Eclipse, która może być używana jako alternatywa dla samodzielnego edytora.
KDevelop
Plotka głosi, że istnieje łatka KDevelop (15 lat, ale kogo to obchodzi?). Osobiście nie sądzę, aby KDevelop był lepszy od Emacsena , więc nie zawracałbym sobie głowy wypróbowaniem go.
Powyższe dotyczy również programowania Objective-C w systemie Linux, ponieważ wszystkie wymienione narzędzia są mniej lub bardziej przenośne.
źródło