Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Links Xcode SDKs from the /SDKs directory (which you maintain yourself)
#!/usr/bin/python
# fix-xcode
# Rob Napier <robnapier@gmail.com>
# Script to link in all your old SDKs every time you upgrade Xcode
# Create a directory called /SDKs (or modify source_path).
# Under it, put all the platform directories:
# MacOSX.platform iPhoneOS.platform iPhoneSimulator.platform
# Under those, store the SDKs:
# MacOSX10.4u.sdk MacOSX10.5.sdk MacOSX10.6.sdk MacOSX10.7.sdk MacOSX10.8.sdk
#
# After upgrading Xcode, just run fix-xcode.
import argparse
import subprocess
import os
source_path = "/SDKs"
parser = argparse.ArgumentParser()
parser.add_argument('xcodePath', help='path to Xcode', nargs='?')
args = parser.parse_args()
if args.xcodePath:
dest_path = args.xcodePath
else:
dest_path = subprocess.check_output(["xcode-select", "--print-path"]).rstrip()
if not dest_path.endswith("/Contents/Developer"):
dest_path += "/Contents/Developer"
for platform in os.listdir(source_path):
subprocess.call("sudo ln -sf %(source_path)s/%(platform)s/* %(dest_path)s/Platforms/%(platform)s/Developer/SDKs" % locals(), shell=True)
@mayoralito

This comment has been minimized.

Show comment Hide comment
@mayoralito

mayoralito Oct 2, 2013

+1 Thanks!

+1 Thanks!

@hlung

This comment has been minimized.

Show comment Hide comment
@hlung

hlung Oct 3, 2013

Nice!

hlung commented Oct 3, 2013

Nice!

@LeeSanghoon

This comment has been minimized.

Show comment Hide comment
@LeeSanghoon

LeeSanghoon Oct 8, 2013

+1

+1

@Alelelex

This comment has been minimized.

Show comment Hide comment
@Alelelex

Alelelex Oct 8, 2013

+1 Thanks

Alelelex commented Oct 8, 2013

+1 Thanks

@link82

This comment has been minimized.

Show comment Hide comment
@link82

link82 Nov 6, 2013

+1 Thank you!!

link82 commented Nov 6, 2013

+1 Thank you!!

@lwburk

This comment has been minimized.

Show comment Hide comment
@lwburk

lwburk Nov 15, 2013

This is great. I currently have both 4.6.3 and 5.0 installed. I used the following to link 5.0 to the SDKs in the old version:

platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
    for platform in `ls $platforms_path`
    do
        sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
    done;
fi;

You just need to supply it with the path to the .app:

./xcode.sh /Applications/Xcode-463.app

lwburk commented Nov 15, 2013

This is great. I currently have both 4.6.3 and 5.0 installed. I used the following to link 5.0 to the SDKs in the old version:

platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
    for platform in `ls $platforms_path`
    do
        sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
    done;
fi;

You just need to supply it with the path to the .app:

./xcode.sh /Applications/Xcode-463.app
@dacaiguoguogmail

This comment has been minimized.

Show comment Hide comment
@dacaiguoguogmail

dacaiguoguogmail Nov 27, 2013

ln: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS6.1.sdk/Developer/SDKs: No such file or directory
why this error?
xcode 5

ln: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS6.1.sdk/Developer/SDKs: No such file or directory
why this error?
xcode 5

@rezwits

This comment has been minimized.

Show comment Hide comment
@rezwits

rezwits Apr 13, 2014

Thanks

rezwits commented Apr 13, 2014

Thanks

@enthuCoder

This comment has been minimized.

Show comment Hide comment
@enthuCoder

enthuCoder May 29, 2015

Sweet!! +1

Sweet!! +1

@agirault

This comment has been minimized.

Show comment Hide comment
@agirault

agirault Dec 17, 2015

I get ld: library not found for -lcrt1.10.6.o when trying to compile using MacOSX10.6.sdk, any known solution?

I get ld: library not found for -lcrt1.10.6.o when trying to compile using MacOSX10.6.sdk, any known solution?

@galambalazs

This comment has been minimized.

Show comment Hide comment
@galambalazs

galambalazs Apr 3, 2016

Modern versions of Xcode (7.3+) need you to edit the MinimumSDKVersion in this file to use older SDKs:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist

Modern versions of Xcode (7.3+) need you to edit the MinimumSDKVersion in this file to use older SDKs:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist

@BenLeggiero

This comment has been minimized.

Show comment Hide comment
@BenLeggiero

BenLeggiero Sep 8, 2016

Traceback (most recent call last):
  File "fix-xcode", line 33, in <module>
    for platform in os.listdir(source_path):
OSError: [Errno 2] No such file or directory: '/SDKs'
  • macOS
    • 10.11.6
  • Xcode
    • 7.3.1
    • 8.0 Beta 6 (8A218a)
    • 8.0 GM (8S201h)
Traceback (most recent call last):
  File "fix-xcode", line 33, in <module>
    for platform in os.listdir(source_path):
OSError: [Errno 2] No such file or directory: '/SDKs'
  • macOS
    • 10.11.6
  • Xcode
    • 7.3.1
    • 8.0 Beta 6 (8A218a)
    • 8.0 GM (8S201h)
@jpmhouston

This comment has been minimized.

Show comment Hide comment
@jpmhouston

jpmhouston Sep 29, 2016

Included on this page are commands to use for altering the Info.plist. Integration into the script should be straightforward, hmm, maybe except for parsing the version number out of the SDK path.

Included on this page are commands to use for altering the Info.plist. Integration into the script should be straightforward, hmm, maybe except for parsing the version number out of the SDK path.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment