This was an annoying error message the first time I ran into it. I had just downloaded Xcode 10.2 beta 2 and opened a project I had been working on in Xcode 10.1 and was greeted by Module compiled with Swift 4.2.1 cannot be imported by the Swift 5.0 compiler.
After a bit of searching I realized that I needed to rebuild my Carthage modules, and had forgotten that xcode-select
needed to be employed as well.
So if you run into this like I did, the fix is simple. Choose which Xcode you need to work with and then use xcode-select
to choose it for commandline builds and run carthage update
.
For example, if I need to switch to the beta version of Xcode:
[code lang=text]
sudo xcode-select -s /Applications/Xcode.app
carthage update
[/code]
I include a nice Makefile
in my projects that streamlines switching back and forth:
1 2 3 4 5 6 7 8 9 |
PHONY: xcode xcode-beta xcode: sudo xcode-select -s /Applications/Xcode.app carthage update --platform ios xcode-beta: sudo xcode-select -s /Applications/Xcode-beta.app carthage update --platform ios |
If I need to switch to using Xcode-beta (which I frequently do since my phone is usually running a beta build), I can just type make xcode-beta
.
Now, of course, when I open my project back up in Xcode
I get Module compiled with Swift 5.0 cannot be imported by the Swift 4.2.1 compiler.
, but that’s okay, a simple make xcode
will get me going!