Вопрос

Каков был бы наилучший способ написания Objective-C на платформе Windows?

Cygwin и gcc?Есть ли способ, которым я могу каким-то образом интегрировать это в Visual Studio?

В этом духе - есть ли какие-либо предложения относительно того, как подключиться и использовать Windows SDK для чего-то подобного?Это другой зверь, но я знаю, что могу написать сборку и связать библиотеки DLL Windows, предоставляя мне доступ к этим вызовам, но я не знаю, как это сделать без поиска в Google и получения пошаговых инструкций.

Кто-нибудь знает о хорошем онлайн-ресурсе или книжном ресурсе, который делал бы или объяснял подобные вещи?

Это было полезно?

Решение

Развивая два предыдущих ответа, если вам просто нужен Objective-C, но не какой-либо из фреймворков Cocoa, то gcc будет работать на любой платформе.Вы можете использовать его через Cygwin или получить MinGW.Однако, если вам нужны фреймворки Cocoa или, по крайней мере, разумное их подмножество, то GNUstep и Cocotron - ваши лучшие варианты.

Cocotron реализует множество функций, которых нет в GNUstep, таких как CoreGraphics и CoreData, хотя я не могу поручиться за то, насколько полной является их реализация в конкретном фреймворке.Их цель - поддерживать Cocotron в курсе последней версии OS X, чтобы любая жизнеспособная программа OS X могла работать в Windows.Поскольку GNUstep обычно использует последнюю версию gcc, они также добавляют поддержку Objective-C ++ и множество функций Objective-C 2.0.

Я не тестировал эти функции с GNUstep, но если вы используете достаточно новую версию gcc, возможно, вы сможете их использовать.Несколько лет назад мне не удалось использовать Objective-C ++ с GNUstep.Однако GNUstep компилируется практически с любой платформы.Cocotron - очень ориентированный на mac проект.Хотя, вероятно, его можно скомпилировать на других платформах, он поставляется с файлами проекта XCode, а не с makefiles, поэтому вы можете скомпилировать его фреймворки "из коробки" только в OS X.Он также поставляется с инструкциями по компиляции приложений Windows на XCode, но не на какой-либо другой платформе.В принципе, вероятно, возможно настроить среду разработки Windows для Cocotron, но это не так просто, как настроить ее для GNUstep, и вы будете действовать самостоятельно, так что GNUstep - это определенно правильный путь, если вы разрабатываете в Windows, а не только для Windows.

Как бы то ни было, Cocotron лицензирован по лицензии MIT, а GNUstep - по лицензии LGPL.

Другие советы

Ты может используйте Objective C внутри среды Windows.Если вы выполните эти действия, все должно работать просто отлично:

  1. Посетите Веб-сайт GNUstep и скачать GNUstep MSYS Subsystem (MSYS для GNUstep), GNUstep Core (Библиотеки для GNUstep), и GNUstep Devel
  2. После загрузки этих файлов устанавливайте в указанном порядке, иначе у вас возникнут проблемы с настройкой
  3. Перейдите к C:\GNUstep\GNUstep\System\Library\Headers\Foundation1 и обеспечить, чтобы Foundation.h существует
  4. Откройте командную строку и запустите gcc -v чтобы проверить это GNUstep MSYS установлен правильно (если вы получаете сообщение об ошибке "файл не найден", убедитесь, что bin папка с GNUstep MSYS находится в вашем PATH)
  5. Используйте эту простую программу "Hello World" для тестирования функциональности GNUstep:

    #include <Foundation/Foundation.h>
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    
  6. Вернитесь в командную строку и cd туда, где вы сохранили программу "Hello World", а затем скомпилировали ее: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. Наконец, в командной строке введите helloworld чтобы запустить его

Всего наилучшего и получайте удовольствие от Objective-C!


Примечания:

  1. Я использовал путь установки по умолчанию - соответствующим образом настройте свою командную строку
  2. Убедитесь, что путь к вашей папке похож на мой, в противном случае вы получите сообщение об ошибке

Также:

Cocotron - это проект с открытым исходным кодом, целью которого является реализация кроссплатформенного API Objective-C, аналогичного тому, который описан в документации Cocoa от Apple Inc.Сюда входят AppKit, Foundation, среда выполнения Objective-C и вспомогательные API, такие как CoreGraphics и CoreFoundation.

http://www.cocotron.org/

WinObjC?Windows Bridge для iOS (ранее известный как ‘Project Islandwood’).

Windows Bridge для iOS (также называемый WinObjC) - это проект Microsoft с открытым исходным кодом, предоставляющий среду разработки Objective-C для Visual Studio / Windows.Кроме того, WinObjC обеспечивает поддержку совместимости с iOS API.В то время как финальный релиз выйдет позже этой осенью (что позволит bridge воспользоваться новыми возможностями инструментов, которые будут поставляться с предстоящим обновлением Visual Studio 2015),

Мост доступен сообществу разработчиков с открытым исходным кодом в его текущем состоянии.Между сегодняшним днем и осенью.iOS bridge - проект с открытым исходным кодом под лицензией MIT.Учитывая амбициозность проекта, разработчикам iOS будет проще создавать и запускать приложения в Windows.

У Салмана Ахмеда есть подробный пост о Windows Bridge для iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/ обсуждаем компилятор, среду выполнения, интеграцию с IDE и то, чем является мост, а чем нет.Лучше всего то, что исходный код iOS bridge находится в режиме реального времени на ГитХаб прямо сейчас.

iOS bridge поддерживает приложения как для Windows 8.1, так и для Windows 10, созданные для процессорных архитектур x86 и x64, и вскоре мы добавим оптимизацию компилятора и поддержку ARM, которая добавляет мобильную поддержку.

Я испытываю смешанные чувства по поводу проекта Cocotron.Я рад, что они выпускают исходный код и делятся им, но я не чувствую, что они делают что-то самым простым способом.

Примеры.
Apple опубликовала исходный код для среда выполнения objective-c, который включает в себя свойства и сборку мусора.Однако проект Cocotron имеет свою собственную реализацию среды выполнения objective-c.Зачем утруждать себя дублированием усилий?Существует даже файл проекта Visual Studio, который можно использовать для создания файла objc.dll.Или, если вы действительно ленивы, вы можете просто скопировать DLL-файл из установленной Safari в Windows.

Они также не потрудились использовать CoreFoundation, который также является открытым исходным кодом Apple.Я опубликовал вопрос по этому поводу, но ответа не получил.

Я думаю, что на данный момент лучшим решением является взять исходный код из нескольких источников (Apple, CocoTron, GNUstep) и объединить его вместе с тем, что вам нужно.Вам придется прочитать много источников, но конечный результат того стоит.

Я знаю, что это очень старый пост, но я нашел решение, которое стало доступно совсем недавно И включает почти все функции Objective-C 2.0 на платформе Windows.

С появлением gcc 4.6 в компилятор Objective-C была добавлена поддержка функций языка Objective-C 2.0 (блоки, точечный синтаксис, синтезированные свойства и т.д.) (см. примечания к выпуску для получения более подробной информации).Их среда выполнения также была обновлена, чтобы работать почти идентично собственной среде выполнения Objective-C 2.0 от Apple.Короче говоря, это означает, что (почти) любая программа, которая будет законно компилироваться с Clang на Mac, также будет компилироваться с gcc 4.6 без изменений.

В качестве дополнительного примечания, одна из недоступных функций - это литералы dictionary / array / etc, поскольку все они жестко запрограммированы в Clang для использования классов Apple NSDictionary, NSArray, NSNumber и т.д.

Однако, если вы счастливы обходиться без обширных фреймворков Apple, вы можете это сделать.Как отмечалось в других ответах, GNUstep и Cocotron предоставляют модифицированные версии библиотек классов Apple, или вы можете написать свои собственные (мой предпочтительный вариант).

MinGW - это один из способов получить GCC 4.6 на платформе Windows, и его можно загрузить с Веб-сайт MinGW.Убедитесь, что при его установке вы включили установку C, C ++, Objective-C и Objective-C ++.Хотя это необязательно, я бы также предложил установить среду MSYS.

После установки исходный код Objective-C 2.0 может быть скомпилирован с:

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

MinGW также включает поддержку компиляции собственных приложений Windows с графическим интерфейсом с помощью -mwindows Отметить.Например:

g++ -mwindows MyFile.cpp

Я еще не пробовал это, но я полагаю, что если вы обернете свои классы Objective-C в Objective-C ++ на максимально возможном уровне, вы сможете успешно объединить собственный графический интерфейс Windows C ++ и Objective-C в одном приложении Windows.

Проверьте WinObjC:

https://github.com/Microsoft/WinObjC

Это официальный проект Microsoft с открытым исходным кодом, который интегрируется с Visual Studio + Windows.

Если вы просто хотите поэкспериментировать, здесь есть компилятор Objective-C для .NET (Windows): qckapp

Вы можете получить компилятор objective c, который будет работать с Windows и работать с Visual Studio 2008 \ 2010 здесь.

открытый-c flite

Просто скачайте последнюю версию исходного кода.Вам не нужно создавать весь CF-Lite, есть решение под названием objc.sln.Вам нужно будет исправить несколько путей включения, но тогда все будет построено просто отлично.Есть даже тестовый проект, так что вы можете увидеть, как некоторые файлы objective-c .m компилируются и работают в Visual Studio.Одна печальная вещь заключается в том, что он работает только с Win32, а не с x64.Существует некоторый ассемблерный код, который нужно было бы написать для x64, чтобы он поддерживал это.

Недавняя попытка перенести Objective C 2.0 на Windows заключается в Субъективный проект.

Из Readme:

Subjective - это попытка перенести Objective C 2.0 с поддержкой ARC в Windows.

Этот проект является ответвлением objc4-532.2, среды выполнения Objective C, которая поставляется с OS X 10.8.5.Порт может быть перекрестно скомпилирован в OS X с использованием llvm-clang в сочетании с компоновщиком MinGW.

Существуют определенные ограничения, многие из которых требуют дополнительной работы, в то время как другие, такие как исключения и блоки, зависят от более серьезной работы в сторонних проектах.Ограничениями являются:

• только 32-разрядная версия - 64-разрядная находится в стадии разработки

• Только статическое связывание - выполняется динамическое связывание

• Никаких замыканий / блоков - до тех пор, пока libdispatch не поддержит их в Windows

• Никаких исключений - до тех пор, пока clang не поддержит их в Windows

• Никакого GC в старом стиле - до тех пор, пока кого-то это не волнует...

• Внутренние органы:никаких vtables, никакой поддержки gdb, только обычный malloc, никаких предварительных оптимизаций - некоторые из этих функций будут доступны в 64-разрядной сборке.

• В настоящее время требуется исправленный компилятор clang;патч добавляет флаг -fobjc-runtime=subj

Проект доступен на сайте Гитхаб, и есть также Нитки о группе Cocotron с изложением некоторых достигнутых результатов и возникших проблемах.

Получить GNUstep здесь

Получить MINGW здесь

Установите MINGW Установите GNUstep Затем протестируйте

Если вас устраивает среда Visual Studio,

Небольшой проект:jGRASP с gcc Большой проект:Кокотрон

Я слышал, что есть эмуляторы, но я смог найти только эмулятор Apple II http://virtualapple.org/.Похоже, это ограничивается играми.

Прежде всего, забудьте о ГНУСтеп Инструменты.Ни то , ни другое Менеджер проектов ни Проектный центр может быть назван IDE.При всем моем уважении, это похоже на парней из ГНУСтеп проект застрял в конце 80-х (именно тогда Следующий шаг впервые появившийся).

Vim

ctags поддерживайте Objective-C с тех пор, как r771 (обязательно выберите предварительную версию 5.9 и добавьте --langmap=ObjectiveC:.m.h перейдите в командную строку, см. здесь), так что у вас будет достойное завершение кода / навигация по тегам.

Вот короткая как это сделать о добавлении поддержки Objective-C в плагин Vim tagbar.

Emacs

То же самое относится и к etags поставляется с современным Emacsen, так что вы можете начать с Emacs Режим Objective C. Ясниппет предоставлю полезные шаблоны:

YASnippet objc-mode

и если вы хотите чего-то более умного, чем базовое завершение кода на основе тегов, взгляните на это вопрос.

Затмение

CDT поддерживает Makefileпроекты, основанные на:

enter image description here

-- таким образом, технически вы можете создавать свои проекты Objective-C "из коробки" (в Windows вам понадобится Лебедин или MinGW набор инструментов).Единственная проблема - это редактор кода, который будет сообщать о множестве ошибок в отношении того, что он считает чистым C код (проверку кода "на лету" можно отключить, но все же ...).Если вам нужна правильная подсветка синтаксиса, вы можете добавить Эклим к вашему Затмение и наслаждайтесь всеми преимуществами обоих Затмение и Vim (смотри выше).

Еще один многообещающий Затмение плагин - это Краситель, но на данный момент он не поддерживает Objective-C.Однако не стесняйтесь подавать запрос на дополнительные функции.

Исправлено

Исправлено, среди другие особенности о великом ИДЕЕ, делает Поддержка Цель-С.Хотя он довольно сложен в освоении (хотя и не такой сложный, как Emacs), я считаю, что это ваш лучший вариант при условии, что вы не возражаете против его приобретения (цена вполне доступная).

Кроме того, он имеет Плагин Eclipse который может быть использован в качестве альтернативы автономному редактору.

KDevelop ( разработка )

Ходят слухи, что существует KDevelop ( разработка ) патч (15-летний, но кого это волнует?).Лично я не думаю, что KDevelop ( разработка ) превосходит по характеристикам по сравнению с Эмаксен, так что я бы не стал утруждать себя этим.


Вышесказанное также относится к разработке Objective-C в Linux, поскольку все упомянутые инструменты более или менее переносимы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top