Компиляция для 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/.
Compiling with AccessKit support
AccessKit provides support for screen readers.
By default, Godot is built with AccessKit dynamically linked. You can use it by placing
accesskit.dylib alongside the standalone executable or in the app bundle's Frameworks folder.
Примечание
You can use dynamically linked AccessKit with export templates as well, rename
the DYLIB to accesskit.{architecture}.dylib
and place them inside the export template app bundle Frameworks folder, and the
libraries will be automatically copied during the export process.
To compile Godot with statically linked AccessKit:
Download the pre-built static libraries from godot-accesskit-c-static library, and unzip them.
When building Godot, add
accesskit_sdk_path={path}to tell SCons where to look for the AccessKit libraries:scons platform=macos accesskit_sdk_path=<...>
Примечание
При желании вы можете самостоятельно собрать библиотеки godot-angle-static, выполнив следующие шаги:
Clone the godot-accesskit-c-static directory and navigate to it.
Выполните следующую команду:
cd accesskit-c
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build
The AccessKit static library should be built using the same compiler you are using for building Godot.
Автоматическое создание .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
To create a .app bundle like in the official builds, you need to use the
template located in misc/dist/macos_template.app. This process can be automated by using
the generate_bundle=yes option on the last SCons command used to build export templates
(so that all binaries can be included). This will create a godot_macos.zip file in bin/
and additionally takes care of calling lipo to create a Universal 2 binary from two separate
ARM64 and x86_64 binaries (if both were compiled beforehand).
Примечание
Вам также потребуется включить поддержку библиотеки-адаптера 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 без необходимости перекомпиляции шаблонов экспорта.
If you created the .app manually, you can zip the macos_template.app folder
to reproduce the macos.zip template from the official Godot distribution:
zip -r9 macos.zip macos_template.app
To use your custom export templates, you can select the godot_macos.zip file in
the advanced options of your export presets:
Alternatively, if you want all your presets to use your custom export template, you
can rename the godot_macos.zip file to macos.zip and move it to the default
location for export templates:
- ::
~/Library/Application Support/Godot/export_templates/<GODOT_VERSION>/macos.zip
Кросс-компиляция для 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 и повторите попытку.