Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Компіляція для macOS

Примітка

На цій сторінці описано, як скомпілювати редактор macOS і експортувати двійкові файли шаблону з джерела. Якщо ви натомість хочете експортувати свій проект у macOS, прочитайте Експорт на macOS.

Вимоги

Для компіляції під macOS необхідно:

  • Python 3.9+.

  • SCons 4.4+ системний збірки.

  • Xcode (або більш легкі інструменти командного рядка для Xcode).

  • Vulkan SDK для MoltenVK (macOS не підтримує Vulkan із коробки). Останню версію Vulkan SDK можна швидко встановити, запустивши misc/scripts/install_vulkan_sdk_macos.sh у сховищі вихідних кодів Godot.

Примітка

Якщо у вас встановлено Homebrew, ви можете легко встановити SCons за допомогою такої команди:

brew install scons

Встановлення Homebrew також призведе до автоматичного отримання інструментів командного рядка для 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/ папка.

Компіляція з підтримкою AccessKit

AccessKit забезпечує підтримку програм зчитування з екрана.

Для компіляції з використанням AccessKit необхідно встановити додаткові залежності. Якщо ви бажаєте пропустити цей крок, ви можете скористатися опцією SCons accesskit=no.

Ви можете встановити необхідні залежності, запустивши файл python misc/scripts/install_accesskit.py у репозиторії вихідного коду Godot. Після запуску цього скрипта скомпілюйте Godot у звичайному режимі.

Примітка

За бажанням ви можете самостійно скомпілювати бібліотеки godot-accesskit-static, виконавши такі кроки:

  1. Клонуйте каталог godot-accesskit-c-static та перейдіть до нього.

  2. Виконайте таку команду:

cd accesskit-c
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install build

Статичну бібліотеку AccessKit слід зібрати за допомогою того ж компілятора, який ви використовуєте для збірки Godot.

Щоб скомпілювати Godot із власним збіркою AccessKit, додайте accesskit_sdk_path={path}, щоб вказати SCons, де шукати бібліотеки AccessKit:

scons platform=macos accesskit_sdk_path=<...>

Компіляція з підтримкою ANGLE

ANGLE забезпечує рівень перекладу з OpenGL ES 3.x на Metal і може використовуватися для покращення підтримки рендерера сумісності на деяких старих графічних процесорах із застарілими драйверами OpenGL.

Для компіляції за допомогою ANGLE необхідно встановити додаткові залежності. Якщо ви бажаєте пропустити цей крок, можна скористатися опцією SCons angle=no.

Ви можете встановити необхідні залежності, запустивши файл python misc/scripts/install_angle.py у репозиторії вихідного коду Godot. Після запуску цього скрипта скомпілюйте Godot у звичайному режимі.

Примітка

За бажанням ви можете самостійно створити бібліотеки godot-angle-static, виконавши наступні дії:

  1. Склонуйте каталог godot-angle-static і перейдіть до нього.

  2. Виконайте таку команду:

git submodule update --init
./update_angle.sh
scons

Також можна вказати архітектуру збірки за допомогою arch={architecture}.

Статичну бібліотеку ANGLE слід компілювати за допомогою того самого компілятора, який ви використовуєте для компіляції Godot.

Щоб скомпілювати Godot із власним збіркою ANGLE, додайте angle_libs={path}, щоб вказати SCons, де шукати бібліотеки ANGLE:

scons platform=macos angle_libs=<...>

Автоматичне створення пакета .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 режимі, який забезпечує функціональність редактора для експорту проектів автоматизованим способом, використовуйте звичайну збірку:

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, яка використовується для створення шаблонів експорту (щоб можна було включити всі бінарні файли). Це створить файл godot_macos.zip у bin/, а також подбає про виклик 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

У більшості випадків слід віддавати перевагу статичному зв’язуванню, оскільки це полегшує розповсюдження. Основна перевага динамічного зв’язування полягає в тому, що воно дозволяє оновлювати MoltenVK без необхідності перекомпілювати шаблони експорту.

Якщо ви створили файл .app вручну, ви можете стиснути папку macos_template.app, щоб відтворити шаблон macos.zip з офіційного дистрибутива Godot:

zip -r9 macos.zip macos_template.app

Щоб використовувати власні шаблони експорту, ви можете вибрати файл godot_macos.zip у розширених налаштуваннях ваших пресетів експорту:

../../../_images/mactemplates.webp

Або ж, якщо ви хочете, щоб усі ваші пресети використовували ваш власний шаблон експорту, ви можете перейменувати файл godot_macos.zip на macos.zip та перемістити його до місця за замовчуванням для шаблонів експорту:

::

~/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"
  1. Дотримуйтесь інструкцій, щоб упакувати SDK: https://github.com/tpoechtrager/osxcross#packaging-the-sdk

  2. Дотримуйтесь інструкцій для встановлення 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 і повторіть спробу.