Как я могу построить определенную архитектуру с помощью 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
Подробности смотрите в этой ссылке.
Ответ 2
Build Settings -> Build Active Architecture Only
- ONLY_ACTIVE_ARCH
YES
- Xcode обнаружит устройство, которое подключено, и определит архитектуру, и будет опираться только на эту архитектуру.
NO
- он будет опираться на все архитектуры (по умолчанию) или на арки в -arch
(valid architectures
aka VALID_ARCHS
)
Для проверки версии используйте lipo -info
[About]
Кратко перечислите типы архитектуры во входном универсальном файле. Перечисляет названия каждого архива.
lipo -info <binary_path>
//or
file <binary_path>
Подробнее здесь и здесь