xcodebuild (из Xcode12 ) — запретить сборку для Apple Silicon (arm64)

#xcode #macos #xcodebuild #xcode12 #apple-silicon

#xcode #macos #xcodebuild #xcode12 #apple-silicon

Вопрос:

Используя xcodebuild из Xcode 12 и сборку для Mac, как мне предотвратить попытку сборки для arm64?

Я пытаюсь создать архив библиотеки (mailcore2) в командной строке через xcodebuild с целью создания xcarchive для распространения SPM.

В Xcode 11 эта команда работает нормально:

 xcodebuild archive -scheme "mailcore osx" 
    -destination "platform=OS X" 
    -archivePath "$BUILD_DIR/mailcore2.macOS.xcarchive" 
    SKIP_INSTALL=NO 
    BUILD_LIBRARY_FOR_DISTRIBUTION=YES
  

Однако в Xcode 12 происходит сбой с этим сообщением:

 The following build commands failed:
    Ld /Users/<USER>/Library/Developer/Xcode/DerivedData/mailcore2-fuubwipfjyvskpfsxtortvjsugny/Build/Intermediates.noindex/ArchiveIntermediates/mailcore osx/IntermediateBuildFilesPath/mailcore2.build/Release/mailcore osx.build/Objects-normal/arm64/Binary/MailCore normal arm64
  

Похоже, что при попытке сборки для arm64 (Apple Silicon) происходит сбой, что имеет смысл, поскольку зависимости еще не созданы для arm Mac. Пока ничего особенного, я просто создам только для x86_64 Mac. После некоторого поиска я обнаружил, что вы можете указать архитектуру в -destination аргументе следующим образом: -destination "platform=OS X,arch=x86_64"

Но когда я пытаюсь использовать это, следующее просто терпит неудачу таким же образом:

 xcodebuild archive -scheme "mailcore osx" 
    -destination "platform=OS X,arch=x86_64" 
    -archivePath "$BUILD_DIR/mailcore2.macOS.xcarchive" 
    SKIP_INSTALL=NO 
    BUILD_LIBRARY_FOR_DISTRIBUTION=YES
  

Есть идеи?

Ответ №1:

Хорошо, итак, после дополнительной проверки справочной страницы xcodebuild и множества экспериментов кажется, что установка -arch аргумента напрямую и отключение -destination аргумента завершают его:

 xcodebuild archive -scheme "mailcore osx" 
    -arch "x86_64" 
    -archivePath "$BUILD_DIR/mailcore2.macOS.xcarchive" 
    SKIP_INSTALL=NO 
    BUILD_LIBRARY_FOR_DISTRIBUTION=YES