You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
xcodebuild -version: Xcode 14.2 Build version 14C18
Are you using --no-build? No
Are you using --no-use-binaries? No
Are you using --use-submodules? No
Are you using --cache-builds? No
Are you using --new-resolver? No
Are you using --use-xcframeworks? Yes
Cartfile
github "Quick/Quick"
github "Quick/Nimble"
Carthage Output
*** xcodebuild output can be found in /var/folders/0x/xmj5lbp51b95_37jrhhbfskh0000gn/T/carthage-xcodebuild.9VvEFn.log
*** Downloading Nimble binary at "v12.3.0"
*** Downloading Quick binary at "v7.3.0"
*** Skipped installing Nimble binary due to the error:
"Incompatible Swift version - framework was built with 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100) and the local version is 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51)."
Falling back to building from the source
*** Building scheme "Nimble-iOS" in Nimble.xcodeproj
Actual outcome
Carthage downloaded and used the Quick.xcframework since it appears to pass the checkSwiftFrameworkCompatibility but when Xcode builds the project it fails with the following error.
failed to build module 'Quick'; this SDK is not supported by the compiler (the SDK is built with 'Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100)', while this compiler is 'Apple Swift version 5.7.2 (swiftlang-5.7.2.135.5 clang-1400.0.29.51)'). Please select a toolchain which matches the SDK.
Expected outcome
Carthage should detect that the Quick framework is not compatible and build it from source like it does for the Nimble framework.
I believe it's caused by the framework being built with a newer version of swift which cannot be used by older versions, even if BUILD_LIBRARY_FOR_DISTRIBUTION is used by the framework.
I tried some quick debugging and it appears that Nimble is only caught because the watchOS framework is missing the .swiftinterface file. If that was present, it wouldn't be built and Xcode would fail with the same error.
The text was updated successfully, but these errors were encountered:
which carthage
: /opt/homebrew/bin/carthagecarthage version
: 0.39.0xcodebuild -version
: Xcode 14.2 Build version 14C18--no-build
? No--no-use-binaries
? No--use-submodules
? No--cache-builds
? No--new-resolver
? No--use-xcframeworks
? YesCartfile
Carthage Output
Actual outcome
Carthage downloaded and used the
Quick.xcframework
since it appears to pass thecheckSwiftFrameworkCompatibility
but when Xcode builds the project it fails with the following error.Expected outcome
Carthage should detect that the Quick framework is not compatible and build it from source like it does for the Nimble framework.
I believe it's caused by the framework being built with a newer version of swift which cannot be used by older versions, even if
BUILD_LIBRARY_FOR_DISTRIBUTION
is used by the framework.https://forums.swift.org/t/why-would-a-framework-w-swift-module-built-with-xcode-15-beta-swift-5-9-not-be-importable-by-previous-versions-of-the-compiler/65704/2
I tried some quick debugging and it appears that Nimble is only caught because the watchOS framework is missing the
.swiftinterface
file. If that was present, it wouldn't be built and Xcode would fail with the same error.The text was updated successfully, but these errors were encountered: