Как я могу построить определенную архитектуру, используя xcodebuild?
У меня есть устаревший код, который опирается на указатели 32-bit
и хочу использовать xCodeBuild
построить этот код из command line
, Это не работает по какой-то причине. Вот команда, которую я использую:
xcodebuild -configuration Debug -arch i386
-workspace MyProject.xcworkspace -scheme MyLib
вот выход я получаю
[BEROR]No architectures to compile for
(ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
Очевидно, он пытается построить x86_64
код и неудача с треском, так как я только включил i386
от VALID_ARCHS
в настройках проекта xCode.
Есть ли способ, чтобы это понять, я не хочу 64-bit
библиотека?
1 ответ
Вы должны установить ONLY_ACTIVE_ARCH
в NO
если ты хочешь xcodebuild
использовать ARCHS
параметры. Передав эти параметры, вы можете форсировать правильную архитектуру.
xcodebuild ARCHS=i386 ONLY_ACTIVE_ARCH=NO -configuration Debug -workspace MyProject.xcworkspace -scheme MyLib
Смотрите эту ссылку для деталей.
xcodebuild ONLY_ACTIVE_ARCH...
//or
Build Settings -> Build Active Architecture Only -> ONLY_ACTIVE_ARCH
YES
- строить двоичный файл с единой архитектурой для подключенного устройства
NO
- создать бинарный файл для конкретного -arch
(valid architectures
он же VALID_ARCHS
), если он был указан, или для всех архитектур в других случаях
Рекомендация - использовать Yes
для отладки (это экономит время сборки) и нет для сборки выпуска.
Примечание: бегать на симуляторе безопасно.
Чтобы проверить версию, используйте lipo -info
[Около]
В Xcode ONLY_ACTIVE_ARCH
имеет соответствующее поле под названием Build Active Architecture Only
в Build Settings
но логика та же
YES
- XCode обнаружит подключенное устройство, определит архитектуру и будет опираться только на эту архитектуру.
NO
- он будет опираться на все архитектуры (по умолчанию) или на арки в -arch
(valid architectures
ака VALID_ARCHS
)
Для проверки версии используйте lipo -info
Кратко перечислите типы архитектуры во входном универсальном файле. Перечисляет названия каждого архива.
lipo -info <path to input file>