Компиляция для macOS
Примечание
На этой странице описывается, как скомпилировать из исходного кода бинарные файлы редактора и шаблонов экспорта для macOS. Если вы хотите экспортировать свой проект на macOS, прочтите Экспорт для macOS.
Требования
Для компиляции под macOS необходимо следующее:
SCons 4.0+ система сборки.
Xcode (или более легковесные Command Line Tools для Xcode).
Vulkan SDK для MoltenVK (macOS не поддерживает Vulkan «из коробки»). Последнюю версию Vulkan SDK можно быстро установить, запустив скрипт
misc/scripts/install_vulkan_sdk_macos.shв репозитории исходного кода Godot.
Примечание
Если у вас установлен Homebrew, вы можете легко установить SCons с помощью следующей команды:
brew install scons
Установка Homebrew также автоматически загрузит Command Line Tools для Xcode, если у вас их ещё нет.
Аналогично, если у вас установлен MacPorts, вы можете легко установить SCons с помощью следующей команды:
sudo port install scons
См. также
Чтобы получить исходный код Godot для компиляции, см. Получение исходного кода.
Для общего обзора использования SCons в Godot, смотрите Введение в систему сборки.
Компиляция
Запустите терминал и перейдите в корневой каталог исходного кода движка.
Для компиляции под Mac на базе процессоров Intel (x86-64), используйте:
scons platform=macos arch=x86_64
Для компиляции под Mac на базе процессоров Apple Silicon (ARM64), используйте:
scons platform=macos arch=arm64
Совет
Если вы компилируете Godot для внесения изменений или доработки движка, вам может пригодиться параметр SCons dev_build=yes или dev_mode=yes. Подробнее см. в документе Псевдонимы разработки и производства.
Если всё пройдёт успешно, результирующий исполняемый файл будет помещён в подкаталог bin/. Этот исполняемый файл содержит весь движок и запускается без каких-либо зависимостей. Его выполнение откроет Менеджер проектов.
Примечание
Не рекомендуется использовать отдельный исполняемый файл редактора; его всегда следует упаковывать в .app-бандл, чтобы избежать проблем с активацией пользовательского интерфейса.
Примечание
Если вы хотите использовать отдельные настройки редактора для собственных сборок Godot и официальных релизов, вы можете включить Автономный режим, создав файл с именем ._sc_ или _sc_ в папке bin/.
Автоматическое создание .app-бандла
Чтобы автоматически создать .app-бандл, как в официальных сборках, используйте опцию generate_bundle=yes в последней команде SCons, использованной для сборки редактора:
scons platform=macos arch=x86_64
scons platform=macos arch=arm64 generate_bundle=yes
Создание пакета .app вручную
Чтобы поддерживать обе архитектуры в одном бинарном файле "Universal 2", выполните две вышеуказанные команды, а затем используйте lipo, чтобы объединить их вместе:
lipo -create bin/godot.macos.editor.x86_64 bin/godot.macos.editor.arm64 -output bin/godot.macos.editor.universal
Чтобы создать .app-бандл, вам нужно использовать шаблон, расположенный в misc/dist/macos_tools.app. Как правило, для оптимизированного бинарного файла редактора, собранного с опцией dev_build=yes:
cp -r misc/dist/macos_tools.app ./bin/Godot.app
mkdir -p bin/Godot.app/Contents/MacOS
cp bin/godot.macos.editor.universal bin/Godot.app/Contents/MacOS/Godot
chmod +x bin/Godot.app/Contents/MacOS/Godot
codesign --force --timestamp --options=runtime --entitlements misc/dist/macos/editor.entitlements -s - bin/Godot.app
Примечание
При сборке ветки master также необходимо включить поддержку библиотеки переносимости MoltenVK Vulkan. По умолчанию она будет подключена статически из вашей установки Vulkan SDK для macOS. Вы также можете подключить её динамически, передав use_volk=yes и включив динамическую библиотеку в ваш пакет .app:
mkdir -p <Godot bundle name>.app/Contents/Frameworks
cp <Vulkan SDK path>/macOS/lib/libMoltenVK.dylib <Godot bundle name>.app/Contents/Frameworks/libMoltenVK.dylib
Запуск headless/серверной сборки
Для запуска в режиме headless, который обеспечивает функциональность редактора для экспорта проектов в автоматическом режиме, используйте обычную сборку:
scons platform=macos target=editor
А затем используйте аргумент коммандной строки --headless:
./bin/godot.macos.editor.x86_64 --headless
Чтобы скомпилировать отладочную сборку сервера, которую можно использовать с remote debugging tools, используйте:
scons platform=macos target=template_debug
Чтобы скомпилировать сборку релизного сервера, оптимизированную для запуска выделенных игровых серверов, используйте:
scons platform=macos target=template_release production=yes
Создание шаблонов экспорта
Для создания шаблонов экспорта macOS необходимо выполнить компиляцию с использованием целей без редактора: target=template_release (шаблон выпуска) и target=template_debug.
Официальные шаблоны — это двоичные файлы Universal 2, которые поддерживают архитектуры ARM64 и Intel x86_64.
Для поддержки ARM64 (Apple Silicon) + Intel x86_64:
scons platform=macos target=template_debug arch=arm64 scons platform=macos target=template_release arch=arm64 scons platform=macos target=template_debug arch=x86_64 scons platform=macos target=template_release arch=x86_64 generate_bundle=yes
Для поддержки только ARM64 (Apple Silicon) (меньший размер файла, но меньшая совместимость со старым оборудованием):
scons platform=macos target=template_debug arch=arm64 scons platform=macos target=template_release arch=arm64 generate_bundle=yes
Чтобы создать .app-бандл, как в официальных сборках, вам нужно использовать шаблон, расположенный в misc/dist/macos_template.app. Этот процесс можно автоматизировать, используя опцию generate_bundle=yes в последней команде SCons, использованной для сборки шаблонов экспорта (чтобы все бинарные файлы могли быть включены). Эта опция также заботится о вызове lipo для создания Universal 2 бинарного файла из двух отдельных бинарников для ARM64 и x86_64 (если оба были предварительно скомпилированы).
Примечание
Вам также потребуется включить поддержку библиотеки-адаптера MoltenVK для Vulkan. По умолчанию она будет статически скомпонована из вашей установки Vulkan SDK для macOS. Вы также можете выбрать динамическую компоновку, передав параметр use_volk=yes и включив динамическую библиотеку в ваш .app-бандл:
mkdir -p macos_template.app/Contents/Frameworks
cp <Vulkan SDK path>/macOS/libs/libMoltenVK.dylib macos_template.app/Contents/Frameworks/libMoltenVK.dylib
В большинстве случаев статическая linking (линковка, связывание) предпочтительнее, поскольку она упрощает распространение. Главное преимущество динамической linking заключается в том, что она позволяет обновлять MoltenVK без необходимости перекомпиляции шаблонов экспорта.
Затем вы можете заархивировать папку macos_template.app, чтобы воспроизвести шаблон macos.zip из официального дистрибутива Godot:
zip -r9 macos.zip macos_template.app
Кросс-компиляция для macOS из Linux
Компиляция для macOS возможна в среде Linux (а возможно, и в Windows с помощью подсистемы Windows для Linux). Для этого вам потребуется установить OSXCross, чтобы использовать macOS в качестве целевой платформы. Сначала следуйте инструкциям по установке:
Клонируйте репозиторий OSXCross куда-нибудь на своем компьютере (или загрузите ZIP-файл и распакуйте его куда-нибудь), например:
git clone --depth=1 https://github.com/tpoechtrager/osxcross.git "$HOME/osxcross"
Следуйте инструкциям по упаковке SDK: https://github.com/tpoechtrager/osxcross#packaging-the-sdk
Следуйте инструкциям по установке OSXCross: https://github.com/tpoechtrager/osxcross#installation
После этого вам нужно будет определить OSXCROSS_ROOT как путь к установке OSXCross (то же место, куда вы клонировали репозиторий/распаковали zip-архив), например:
export OSXCROSS_ROOT="$HOME/osxcross"
Теперь вы можете выполнить компиляцию с помощью SCons, как обычно:
scons platform=macos
Если ваша версия OSXCross SDK отличается от той, которую ожидает система сборки SCons, вы можете указать пользовательскую версию с помощью аргумента osxcross_sdk:
scons platform=macos osxcross_sdk=darwin15
Устранение неполадок
Фатальная ошибка: файл 'cstdint' не найден
Если на ранней стадии вы получили ошибку компиляции такого рода, скорее всего, это связано с необходимостью исправления установки инструментов командной строки Xcode после обновления macOS или Xcode:
./core/typedefs.h:45:10: fatal error: 'cstdint' file not found
45 | #include <cstdint>
| ^~~~~~~~~
Выполните эти две команды, чтобы переустановить инструменты командной строки Xcode (при необходимости введите пароль администратора):
sudo rm -rf /Library/Developer/CommandLineTools
sudo xcode-select --install
Если это не помогло, попробуйте обновить Xcode из Mac App Store и повторите попытку.