xcodebuild (da Xcode12) - impedisce la compilazione per Apple Silicon (arm64)

Sep 17 2020

Usando xcodebuild da Xcode 12 e compilando per Mac, come posso impedire che tenti di compilare per arm64?

Sto cercando di creare un archivio di una libreria ( mailcore2 ) sulla riga di comando tramite xcodebuild allo scopo di creare un xcarchive per la distribuzione SPM.

Su Xcode 11, questo comando funziona bene:

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

Su Xcode 12, tuttavia, non riesce con questo messaggio:

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

Sembra che stia fallendo quando si tenta di compilare per arm64 (Apple Silicon), il che ha senso poiché le dipendenze non sono ancora state create per i Mac arm. Non è un grosso problema per ora, creerò solo per Mac x86_64. Dopo alcune ricerche ho scoperto che puoi specificare l'architettura sotto l' -destinationargomento in questo modo:-destination "platform=OS X,arch=x86_64"

Ma quando provo a usarlo, quanto segue fallisce allo stesso modo:

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

Qualche idea?

Risposte

1 RogerTheShrubber Sep 17 2020 at 01:15

Ok, quindi con un po 'più di setacciare la pagina man di xcodebuild e molti esperimenti, sembra che impostare l' -archargomento direttamente e tralasciare l' -destinationargomento lo fa:

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