Cross-compiling
Проверка системы
Сделать новый проект, добавить в него библиотеку cargo add current_platform. Далее создаём и запускаем код проверки среды компиляции и исполнения:
- Посмотреть текущую ОС компиляции:
rustc -vV - Посмотреть список ОС для кросс-компиляции:
rustc --print target-listФормат списка имеет поля<arch><sub>-<vendor>-<sys>-<env>, например,x86_64-apple-darwin=> macOS на чипе Intel.
Настройка кросс-компилятора
Нужно установить cross: cargo install cross установит его по пути $HOME/.cargo/bin
Далее, нужно установить вариант Docker в системе:
- На macOS => Docker Desktop;
- На Linux => Podman
Запуск кода на компиляцию под ОС Windows: cross run --target x86_64-pc-windows-gnu => в папке target/x86_64-pc-windows-gnu/debug получаем EXE-файл с результатом.
❗Компиляция проходит через WINE.
Проверка среды компиляции
Cross поддерживает тестирование других платформ. Добавка проверки:
Запустить проверку локально: cargo test
Запустить проверку с кросс-компиляцией: cross test --target x86_64-pc-windows-gnu
На Linux/macOS проверка пройдёт, а вот при компиляции под Windows - нет:
`test tests::test_compiled_on_equals_current_platform … FAILED
Добавка платформенно-специфичного кода
Можно вписать код, который запустится только на определённой ОС, например, только на Windows: