xcodebuild (von Xcode12) - Verhindert das Erstellen für Apple Silicon (arm64)
Wie kann ich verhindern, dass mit xcodebuild von Xcode 12 und dem Erstellen für Mac versucht wird, für arm64 zu erstellen?
Ich versuche, über xcodebuild ein Archiv einer Bibliothek ( mailcore2 ) in der Befehlszeile zu erstellen, um ein xcarchive für die SPM-Verteilung zu erstellen.
Unter Xcode 11 funktioniert dieser Befehl einwandfrei:
xcodebuild archive -scheme "mailcore osx" \
-destination "platform=OS X" \
-archivePath "$BUILD_DIR/mailcore2.macOS.xcarchive" \
SKIP_INSTALL=NO \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES
Auf Xcode 12 schlägt dies jedoch mit der folgenden Meldung fehl:
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
Es sieht so aus, als ob es beim Versuch, für arm64 (Apple Silicon) zu erstellen, fehlschlägt. Dies ist sinnvoll, da die Abhängigkeiten noch nicht für arm-Macs erstellt wurden. Im Moment keine große Sache, ich werde nur für x86_64-Macs bauen. Nach einiger Suche habe ich festgestellt, dass Sie die Architektur unter dem folgenden -destinationArgument angeben können :-destination "platform=OS X,arch=x86_64"
Aber wenn ich versuche, das zu verwenden, schlägt das Folgende genauso fehl:
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
Irgendwelche Ideen?
Antworten
Okay, mit etwas mehr Durchsuchen der xcodebuild-Manpage und viel Experimentieren scheint es, als würde man das -archArgument direkt setzen und das -destinationArgument weglassen, um es zu erreichen:
xcodebuild archive -scheme "mailcore osx" \
-arch "x86_64" \
-archivePath "$BUILD_DIR/mailcore2.macOS.xcarchive" \
SKIP_INSTALL=NO \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES