Введение
Итак, у вас есть бинарный файл, который вы хотите распространять, но в данный момент вы можете компилировать только для Windows и Linux. Вы потратили часы, если не дни, на поиск в гугле подходящего способа кросс-компиляции с Linux на Mac… Ну, я здесь, чтобы сказать вам, что я был там и теперь предлагаю простое решение!
Соус
Основное использование
# Setup Rust, use the x86_64-apple-darwin target but the rest can be customized.
- uses: ATiltedTree/setup-rust@v1
with:
targets: x86_64-apple-darwin
rust-version: nightly # Works both with 'stable' and 'nightly'
# Use the v1 of this action
- uses: mbround18/setup-osxcross@v1
# This builds executables & sets env variables for rust to consume.
with:
osx-version: "12.3"
# Checkout your code
- name: Clone your Code
uses: actions/checkout@v3
# Build your code for apple-darwin based release
- name: Build Your Code
run: cargo build --release --target x86_64-apple-darwin
Объяснение функциональности
- Создает папку
osxcross
в рабочей директории github actions. (чтобы избежать вмешательства в любые файлы, с которыми вы можете работать) - Клонирует репозиторий
osxcross
. - Загружает SDK, соответствующий указанной вами версии, из @joseluisq/macosx-sdks
- Проверяет кэш
- Собирает, если кэш не был достигнут
- Устанавливает переменные окружения для сборки
x86_64-apple-darwin
.
Крики и благодарности
- Спасибо Джеймсу Уэйплзу за написание статьи о кросс-компиляции
- Спасибо osxcross за создание пути вперед
- Спасибо joseluisq за упаковку SDK