Полное решение для написания приложения Mac OS X в С++

Я ищу альтернативы для моего текущего окна, и Mac OS X кажется очень привлекательным.

Моя основная область интересов - программирование на C++. В настоящее время я использую Eclipse + CDT и g++ для создания моего программного обеспечения; иногда это KDevelop.

Я знаю, что основной IDE для Mac является Xcode, а основным языком является Objective-C. Я хотел бы избежать обучения Objective-C, если это вообще возможно. Я также слышал/читал, что есть некоторые проблемы с доступом к API Mac OS X с С++.

Отсюда мой вопрос: каково полное решение для разработки/отладки/тестирования приложений на С++, которые имеют доступ ко всем аспектам аппаратного обеспечения (UI, звук, видео/ускоренное видео и т.д.) для Mac OS X?

Изменить: как Xcode сравнивается с комбо Eclipse + CDT? Если это сравнение вообще возможно...

Ответы

Ответ 1

Если вы хотите использовать С++ вместо Objective-C и все еще хотите избежать промежуточного уровня библиотек (например, QT), вы можете использовать Carbon.

Я бы использовал XCode вместо Eclipse просто потому, что Eclipse работает медленнее при работе с хардкорным программированием на C/С++ (компиляция, отладка, тестирование).

Когда я впервые начал программировать в Mac OS X, я был на той же странице, что и сейчас. Я подумал, что лучше придерживаться языка, который я знал (С++), и использовать более старую библиотеку (Carbon). По какой-то причине я не помню сейчас, я заставил себя в Cocoa (Objective-C). Оглядываясь назад, я думаю, что это было хорошо, потому что:

  • Objective-C принципиально не отличается от С++
  • Cocoa лучше, быстрее и проще Carbon
  • iPhone Dev исключительно Cocoa (Carbon не поддерживается)

Ответ 2

Вам следует не избегать обучения Objective-C и Cocoa. На самом деле это должно быть первое, что вы делаете. Если у вас нет прочного фона в Smalltalk, вы вряд ли подверглись воздействию большого (набора) фреймворков, которые также хорошо разработаны.

Ответ 3

Objective-C не так уж сложно. Если вы знаете С++, вам понадобится день или три прилагаемых усилия, чтобы изучить соглашения.

API и соглашения Cocoa занимают больше времени, но они приходят вовремя.

Удачи!

Ответ 4

Если вы не используете промежуточный уровень, например QT, я думаю, что вы довольно сильно зацикливаетесь на Objective C, чтобы взаимодействовать с частями API, такими как графический интерфейс, поскольку это их родной язык.

Тем не менее, было упомянуто, что вы можете легко смешивать код Objective-C и код на С++, чтобы вы могли написать большинство приложений на С++.

Я в основном программист на С++, но я всегда занимаюсь другими языками, и у меня была игра с XCode (да, у меня есть Mac). Мне понравилось, это немного по-другому, но как способ сглаживания GUI OS X это превосходно, а остальное находится между вами и вашим любимым редактором, если вам не нравится XCode.

Ответ 5

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

Ответ 6

Нет проблем с использованием gcc или g++ из OS X. Установка XCode дает вам эти компиляторы в любом случае, и если вы действительно хотите, вы можете загрузить экземпляр x-сервера и заставить KDE работать. Однако мне нравится редактор XCode. Eclipse также работает с OS X, поэтому вы можете использовать текущую среду.

Я использовал поле OS X для кросс-компиляции кода C от арки PPC до ARM arch, без проблем. Это еще одна система стиля * nix, поэтому все инструменты, с которыми вы знакомы, уже существуют, а если они этого не делают, просто используйте fink или macports, чтобы получить их самостоятельно.

Кроме того, если вы действительно хотели использовать С++ для разработки приложений OS X, вы всегда можете использовать Carbon вместо Cocoa. Это совершенно жизнеспособный выбор, только слегка устаревший.

Ответ 7

Carbon на Mac OS X эффективно устарел - он не поддерживает и не поддерживает 64-разрядные приложения.

Если вы действительно хотите использовать С++, используйте Qt Creator

Теперь это бесплатно, а SDK Trolltech включает Qt 4.5, который, хотя он является С++-структурой, использует внутри себя Objective-C для взаимодействия с MAC OS X, поэтому вы не ограничены Carbon.

Недостатком является то, что библиотеки trolltech не являются стандартными для Mac, вы должны предоставить им свое приложение.

Ответ 8

С++ отлично работает с Xcode. Если вы хотите cocoa, вы можете узнать минимальное (и я имею в виду минимально) количество Obj-C для слоя gui и большую часть вашего кода на С++.

Другой вариант - использовать одну из фреймворков языка сценариев для подключения к API Cocoa (например, PyObjc) и основную часть вашей логики на С++.

В третьем и последнем вариантах используется кросс-платформенный набор gui, такой как Qt4. Если есть желание сделать ваши библиотеки перекрестной платформой, это будет маршрут.

Я бы порекомендовал не идти с Carbon. Это определенно умирающий зверь. Вы также можете использовать комбинацию из вышеперечисленного, предоставляя библиотеку с кодом С++, а затем создавая GUI-специфический пользовательский интерфейс, который связывает их с ними.

Ответ 9

Я согласен с Pablo Santa Cruz и хотел бы добавить, что тривиально смешивать Objective-C с С++ в том же приложении (и в том же исходном файле). Это называется Objective-C ++ и обсуждается в этой статье.

XCode компилируется с GCC, поэтому у вас есть цели C, C и С++, готовые к вашим советам пальцев.

Ответ 10

Я не использовал его непосредственно в OSX (я могу порекомендовать его в Windows), но IDE Code:: Blocks С++ реализуется с использованием и поддерживает кросс-платформенную графическую библиотеку wxWidgets. Он поддерживается в OSX - см. эту страницу.

Ответ 11

Я бы посоветовал вам придерживаться какой-либо IDE, с которой вам больше всего нравится. Лично я ненавидел Xcode в первый раз, когда я его использовал, и отказался отказаться от Eclipse. Через несколько дней я разогрелся до Xcode и не против использовать его время от времени. Однако я по-прежнему использую Eclipse.

Просто помните, что вы не можете писать приложения Cocoa, используя только С++, вам нужно окунуться в Obj-C для этого. Углеродные приложения не совсем выглядят или ведут себя как приложение Cocoa. Большинство людей на самом деле не возражаете, но это о чем подумать. Я прыгнул в Obj-C из java/С# без каких-либо проблем. Язык немного привыкает, но это не очень сложно.

Ответ 12

Если вы действительно хотите использовать С++ в Mac OS X, используйте что-то вроде SDL/wxWidgets/Qt.

Существует возможность объединения Objective-C с С++, называемого Objective-C ++. Вы можете использовать его для всех ваших моделей и просто использовать Objective-C для материала, что невозможно без Foundation-framework.

В качестве последней опции приходит на ум Carbon. Это родная среда, которая использовалась в pre-OSX раз, но работает на Mac OS X. Проблема в том, что она не поддерживается для более новых технологий, и я думаю, что следующая версия OS X, Snow Leopard, не будет поддерживать это вообще.

Apple говорит:

Carbon позволяет разработчикам C/С++ воспользуйтесь функциями Mac OS X, включая кварцевую 2D-графику библиотека, эффективная обработка событий механизм и многопроцессорность поддержка. Кроме того, другие Стандартные C/С++ API-интерфейсы доступный разработчикам Carbon, обеспечивая доступ к таким услугам, как система рисования OpenGL, Mach микроядро и операционная система BSD услуги.

Не ожидайте, что приложения Carbon будут выглядеть на 100% родными, а для программирования намного сложнее, чем Cocoa.

Однако я рекомендую learning Objective-C, это не сложно, и есть много мощных фреймворков, таких как CoreData, CoreGraphics и т.п.

Ответ 13

Для некоторых небольших проектов для хобби и приложения для iPhone, которое я создаю, я использую сочетание объективных С++ и "реальных" С++. XCode поддерживает смешение обоих языков достаточно хорошо. Я использую объективный C/object С++ для пользовательского интерфейса и как тонкий слой между платформами OSX и собственным кодом. До сих пор это оказалось отличным способом работы.

Ответ 14

Среда разработки, которую я использую сейчас для разработки на Mac, - это QTCreator, которая является бесплатной средой разработки для разработки в QT с gcc как компилятором. Он предоставляет все функции, которые мне нужны, и это кросс-платформа (одно требование приложения, которое я разрабатываю).

Я должен сказать, что меня впечатлило. У меня не было больших надежд на такой целенаправленный (специально разработанный для QT) и недавний IDE. Среда проста, но мощна (включая редактирование графического интерфейса) и имеет лучшее завершение кода, которое я когда-либо видел. Это легкое программирование в этой среде и не пропустите немного Visual Studio.

Действительно стоит попробовать.