Как указать Xcode на старый SDK, чтобы он мог использоваться как "базовый SDK"?

Моя настройка Mac:

Том A:
OS X 10.8
Xcode 4.5 или новее - 10.6 SDK НЕ доступен в качестве базового SDK

Том B:
OS X 10.7
Xcode 4.3.3 - 10.6 SDK IS, доступный как базовый SDK

Объем C:
OS X 10.6
Xcode 4.2 - 10.6 SDK IS доступен как базовый SDK


В томе A я установил Xcode 4.5, который не включает 10.6 SDK в качестве доступного "базового SDK" в настройках сборки Build Targets.

У меня есть отдельный том 10.6 и 10.7 на этом жестком диске - оба из которых имеют Xcode, и оба из них позволяют мне выбрать 10.6 SDK в качестве базового SDK в настройках сборки для Xcode Build Targets.

Я знаю, что у меня установлен SDK 10.6 на томе C (в /Developer/SDKs из старой установки Xcode).

Как я могу указать Xcode на томе A на 10.6 SDK, который живет на Volume C?

Ответ 1

Вам нужно добавить символическую ссылку на старый SDK (это, как правило, проще, чем копирование).

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
ln -s /path/to/old/SDK .

Это отлично подходит для 10.5. Помимо этого вещи становятся немного сложнее...

Хотя в будущих версиях Xcode нет обещаний, что это будет поддерживаться, я общался с командой Xcode об этом, и они вряд ли захотят изменить его в ближайшее время.

Лично я часто сохраняю /path/to/old/SDK в каталоге верхнего уровня /SDK. Таким образом, каждый раз, когда я обновляю его, легко все исправить.

EDIT: у меня есть fix-xcode script, который упрощает повторное применение этого исправления каждый раз при обновлении Xcode.


UPDATE: в современных версиях Xcode (7.3+) для использования старых SDKs edit MinimumSDKVersion здесь:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist

Ответ 2

Неправильный подход. Вы не указываете Xcode на SDK. Вместо этого вам удастся скопировать SDK в соответствующую папку "SDK" для установки Xcode. В современных установках Xcode это обычно:

Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/

Скопируйте SDK там, закройте и перезапустите Xcode и посмотрите, что вы найдете.

(чтение другого ответа здесь, я думаю, что символическая привязка может быть вариантом, если вы мертвы, сохраняя исходный SDK в другом месте)

Ответ 3

Почему не просто символическая ссылка на SDK? "ln -s"? Если это не сработает, потребуется какой-то взлом для взлома.

Ответ 4

Решено, просмотрев более старую версию Xcode.App/Developer/platforms и скопировав iOS 6.1 SDK в ту же папку XCode 5.