[Перевод] SFML и Xcode (Mac OS X)

bc794ab377be444f8090426e56ae38bd.png

От переводчика: данная статья является четвертой в цикле переводов официального руководства по библиотеке SFML. Прошлую статью можно найти тут. Данный цикл статей ставит своей целью предоставить людям, не знающим язык оригинала, возможность ознакомится с этой библиотекой. SFML — это простая и кроссплатформенная мультимедиа библиотека. SFML обеспечивает простой интерфейс для разработки игр и прочих мультимедийных приложений. Оригинал статьи можно найти тут. Начнем.

Вступление


Это первая статья, которую вы должны прочитать, если вы используете SFML с Xcode, и если вы занимаетесь разработкой приложений для Mac ОС X вообще. В ней будет рассказано, как установить SFML, настроит интерактивную среду разработки и скомпилировать программу, использующую SFML. Что еще более важно, в ней будет рассказано, как сделать ваши приложения готовыми для использования «из коробки» для конечных пользователей.

В данной статье есть внешние ссылки. Они предназначены для более детального ознакомления с темой.

Системные требования


Все что вам необходимо, что бы создать приложение, использующее SFML, это:

  • Intel Mac с Max OS X Lion или более поздней версией (10.7+)
  • Xcode (желательно четвертой или более поздней версии, которая доступна в App Store) и clang.

С последними версиями Xcode вы так же должны установить Command Line Tools from Xcode > Preferences > Downloads > Components.

Двоичные файлы: dylib или фреймворки


SFML для Mac OS X доступна в двух вариантах. С одной стороны есть dylib, с другой пакеты фреймворков. Оба варианта представлены в виде универсальных двоичных файлов, поэтому они могут использоваться на 32-битных или 64-битных системах Intel без адаптирования под конкретную платформу.

Dylib представлена динамической библиотекой (это что-то вроде файлов с расширением .so в Linux). Вы можете узнать больше в этой документации по dylib. Фреймворки чем-то похожи на dylib, за исключением того, что они могут инкапсулировать внешние ресурсы. Здесь доступна более подробная документация по фреймворкам.

Есть только одно отличие между этими двумя типами библиотек, которое вы должны учитывать при разработке ваших приложений: если вы собрали SFML самостоятельно, вы можете использовать dylib в конфигурациях debug и release. Однако, фреймворки доступны только в конфигурации release. В любом случае, это не проблема, если вы хотите использовать release версию SFML при выпуске своего приложения. Именно по этой причине на странице загрузки для OS X доступны только бинарные файлы для конфигурации release.

Шаблоны Xcode


SFML снабжен двумя шаблоны для Xcode 4 и более поздних версий, которые позволяют создавать новые проекты очень быстро и легко. Эти шаблоны помогут вам настроить ваш проект: вы можете выбрать те модули, которые требуются вашему приложению, хотите ли вы использовать SFML с помощью dylib или с помощью фреймворков и нужно ли создать установочный пакет, содержащий все ресурсы приложения (оформлять процесс установки вашего приложения очень просто). Смотрите ниже для более подробной информации.

Имейте в виду, что эти шаблоны не совместимы с Xcode 3. Если вы до сих пор используете эту версию IDE, и вы не хотите обновить ее, вы все же можете создавать SFML приложения. Руководство по тому как это делать выходит за рамки данной статьи. Пожалуйста, обратитесь к документации Apple по Xcode 3.

C++11, libc++ и libstdc++


Xcode поставляется с версией clang и libc++, которая частично поддерживает C++11 (то есть некоторые новые функции еще не реализованы). Если вы планируете использовать новые функции C++11, необходимо настроить проект таким образом, чтобы использовать clang и libc++.

Однако, если ваш проект зависит от libstdc++ в (напрямую или косвенно), необходимо собрать SFML самостоятельно и настроить проект соответствующим образом.

Установка SFML


Для начала вы должны скачать SFML SDK со страницы загрузки. Затем, для того, чтобы начать разработку SFML приложений, вы должны установить следующие элементы:

  • Заголовочные файлы и библиотеки
    SFML доступена либо в виде библиотек dylib, либо в качестве фреймворков. Только один тип требуется хотя оба могут быть установлены одновременно на одном компьютере. Мы рекомендуем использовать фреймворки.
    • dylib
      Скопируйте содержимое lib в /usr/local/lib и скопируйте содержимое include в /usr/local/include.
    • Фреймворки
      Скопируйте содержимое Frameworks в /Library/Frameworks.

  • Зависимости SFML
    SFML в Mac OS X зависит от некоторых библиотек. Cкопируйте содержимое extlibs в /Library/Frameworks.
  • Шаблоны Xcode
    Эта функция не является обязательной, но мы настоятельно рекомендуем установить ее. Скопируйте директорию SFML из templates в /Library/Developer/Xcode/Templates (если одна или несколько директорий отсутствуют — создайте ее (их)).

Создание вашей первой SFML программы


Мы предоставляем два шаблона для Xcode. SFML CLT генерирует проект для классической терминальной программы, тогда как SFML App создает проект для пакета приложений. Здесь мы будем использовать последнее, но оба варианта работают одинаково.

Сначала выберите File > New Project…, затем выберите SFML в левой колонке и дважды щелкните на SFML App.

29d56be9a9bd465b896d5e8f04b6d84d.png

Теперь вы можете заполнить необходимые поля, как показано на следующем снимке экрана. Когда вы закончите нажмите кнопку Next.

fd108c5e213a4c9d906004dc60c240f7.png

Ваш проект теперь настроен к созданию пакета приложения (файл с расширением ».app»).

Несколько слов о шаблоны настроек. Если вы выберите несовместимый вариант для компилятора C++ и стандартной библиотеки, в конечном итоге вы получите ошибку компоновщика. Убедитесь, что вы следуете этой рекомендации:

  • Если вы скачали версию «Clang» со страницы загрузки, вы должны выбрать C++11 with Clang and libc++.
  • Если вы собрали SFML самостоятельно, вы должны быть в состоянии выяснить, какой вариант следует использовать. ;-)

Теперь ваш проект готов, давайте посмотрим, что у нас получилось:

59b26bc8d8ca4115be9f2770e50ac508.png

Как видите, уже есть несколько файлов в проект. Есть три важных типа файлов:

  1. Заголовочные файлы и файлы с исходным кодом: проект поставляется с базовым примером в файле main.cpp и вспомогательной функцией
    std::string resourcePath(void);
    
    в ResourcePath.hpp и ResourcePath.mm. Целью этой функции, как показано в примерах, является предоставить удобный способ доступа в директорию Resources вашего пакета
    . Обратите внимание, что эта функция работает только на Mac OS X. Если вы хотите, что бы ваше приложение работало на других операционных системах, вы должны реализовать собственную версию данной функции.
  2. Файлы ресурсов: ресурсы базовых примеров находятся в этой директории и автоматически копируются в ваш пакет вашего приложения, когда вы компилируете его.
    Что бы добавить новые ресурсы в ваш проект, просто перетащите их в эту папку и убедитесь, что они стали членами целевого приложения.
  3. Продукты: ваши приложения. Просто нажмите кнопку Run, что бы проверить ваше приложение.

Другие файлы в проекте не очень важны для нас. Помните, что SFML и ее зависимости добавляются в ваш пакет приложения. Это делается для того, что бы ваше приложение можно было запустить на другом компьютере Mac без установки SFML или ее зависимостей.

© Habrahabr.ru