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

Примітка

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

Вимоги

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

  • Python 3.8+.

  • SCons 4.0+ будувати систему.

  • 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/ папка.

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

Потім ви можете стиснути папку 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"
  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 і повторіть спробу.