Быстрый ответ: да, можем!
Прежде чем я перейду к части « как это делается », вот несколько заметок о моем патче / хаке / исправлении. С самого начала основными целями были:
Сведите все модификации к абсолютному минимуму.
Мы хотим сохранить настройки Xcode как можно более оригинальными.
Во что бы то ни стало, старайтесь избегать исправления или изменения каких-либо файлов.
Мы хотим, чтобы все файлы оставались нетронутыми и сохраняли исходное содержание.
Старайтесь не перемещать и не копировать файлы без крайней необходимости.
Я смог сохранить все эти цели. Почти все делается путем создания символических ссылок. Необходимо было заменить только одну существующую символическую ссылку, и мы сделаем резервную копию перед заменой, на всякий случай.
Если вы не являетесь экспертом в терминальных операциях, я настоятельно рекомендую вам скопировать / вставить все команды терминала из моего ответа в ваш терминал, чтобы избежать опечаток. Имейте в виду, что даже интервалы, цитирование и особенно использование заглавных букв могут быть важны. Скопируйте / вставьте их построчно, никогда не более одной строки за раз, и нажимайте return после каждой вставленной строки, чтобы выполнить команду. Если какая-либо операция когда-либо запрашивает пароль, это будет пароль пользователя-администратора, который в данный момент вошел в систему (нажатия клавиш не отображаются при вводе, это нормально, не волнуйтесь, просто продолжайте вводить пароль и нажмите return; повторно) -попробуйте, если у вас была опечатка, и снова получите запрос).
Предпосылка
Прежде чем мы сможем начать, убедитесь, что выполняются следующие условия:
- Вы вошли в систему как администратор.
- Вы запустили Terminal.app (Приложения / Утилиты), и окно терминала открыто.
- У вас есть копия Xcode3 (например, 3.2.5) и образа диска Xcode4 (DMG) или доступный установщик.
- Если у вас уже установлена какая-либо версия Xcode, сначала рассмотрите возможность ее удаления , чтобы вы могли начать с новой / чистой установки. Удаление Xcode не приведет к удалению ваших предпочтений, цветовой схемы или настроек привязки клавиш. В идеале вы должны начать с системы, в которой в настоящее время не установлена версия Xcode (ни 3, ни 4).
Шаг 1: установка Xcode3
Важно : не устанавливайте " Системные инструменты " или " Unix Development " пакет Xcode3.
Хотите ли вы установить « Mac OS X 10.4 SDK » и / или « Документацию » - решать вам. Если это Xcode3 с iOS SDK, то устанавливать вы их или нет - тоже зависит от вас.
Вы можете выбрать любую папку для установки. Для этого руководства я выбрал « / Xcode3 », но не стесняйтесь выбирать другой. Просто не забудьте соответствующим образом изменить все команды терминала.
Порядок действий, приведенный здесь, обычно не очень важен, но я настоятельно рекомендую вам не менять местами шаг 1 и шаг 2. Xcode всегда устанавливает пару файлов вне выбранной папки назначения и поверьте мне, в конце концов, вы хотите, чтобы Xcode4 версии этих файлов на вашем диске. Установив Xcode3 до Xcode4, вы можете быть уверены, что Xcode4 при необходимости перезапишет эти файлы. Однажды я поменял местами шаги 1 и 2, и в итоге у меня возникли довольно странные проблемы, которые могли быть связаны с неправильным порядком (я не могу точно сказать, но после переустановки в правильном порядке проблемы исчезли).
Шаг 2: установка Xcode4
Выбирайте любые понравившиеся пакеты. Установка « Системных инструментов » желательна, но не является строго необходимой (хотя большинство людей рано или поздно упускают эту функциональность).
Опять же, не стесняйтесь выбирать любую целевую папку, которая вам нравится. Для этого руководства я выбрал обычную целевую папку « / Developer », если вы выберете другую, измените все команды терминала соответствующим образом.
Шаг 3. Восстановление поддержки SDK 10.4 / 10.5
Перейдите в окно терминала и выполните следующие команды:
cd / Developer / SDK
sudo ln -s /Xcode3/SDKs/MacOSX10.4u.sdk.
sudo ln -s /Xcode3/SDKs/MacOSX10.5.sdk.
Конечно, запускайте команду для 10.4u, только если вы также установили SDK 10.4 на шаге 1.
Этого достаточно, чтобы вернуть SDK 10.5 (и, возможно, 10.4) в список выбора в Xcode4. Попробуйте, если хотите. Запустите Xcode4, откройте проект, попробуйте изменить выбранный SDK. Это было легко, да? Не забудьте снова закрыть Xcode4 (приложение, а не только окно), прежде чем переходить к следующему шагу.
Шаг 4. Восстановление поддержки GCC 4.0
Если вы не установили MacOS 10.4 SDK или не планируете когда-либо его использовать, вы можете пропустить этот шаг и перейти к шагу 5.
Чтобы использовать SDK 10.4, вам придется использовать GCC 4.0, GCC 4.2 работать не будет. Apple утверждает, что GCC 4.2 несовместима с SDK 10.4, ну, если вы спросите меня, это обман. Я уже несколько раз переписывал эти ограничения, и из-за этого никогда не было ни малейшей проблемы. Было бы легко изменить SDK 10.4 так, чтобы Xcode позволял вам использовать для него GCC 4.2, но моей целью было избежать всех модификаций файлов, поэтому мы просто добавляем поддержку GCC 4.0 обратно в Xcode, что тоже хорошо, потому что некоторые проекты действительно зависят от GCC 4.0 (например, в GCC 4.2 есть некоторые ошибки, которые не позволяют корректно компилировать встроенный ассемблерный код без ошибок, в то время как тот же код компилируется безупречно на GCC 4.0 и GCC 4.4).
Вернуться к терминалу:
компакт-диск / Разработчик / usr / bin
sudo ln -s /Xcode3/usr/bin/*4.0*.
компакт-диск / Разработчик / usr / libexec / gcc / powerpc-apple-darwin10
sudo ln -s /Xcode3/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1.
Прямо сейчас мы восстановили полную поддержку GCC 4.0, за исключением того факта, что GCC 4.0 по-прежнему нельзя выбрать в Xcode4. Это потому, что Xcode4 больше не имеет подключаемого модуля компилятора GCC 4.0. К счастью, плагин Xcode3 работает и в Xcode4, только позиция радикально изменилась. Apple теперь скрывает эти плагины глубоко внутри пакета, и, похоже, работают только те плагины, которые там работают, размещение их в старом положении не имеет никакого эффекта.
компакт-диск / Разработчик / Библиотека / Xcode / PrivatePlugIns
cd Xcode3Core.ideplugin / Contents / SharedSupport / Developer / Library / Xcode / Plug-ins
sudo ln -s "/ Xcode3 / Library / Xcode / Plug-ins / GCC 4.0.xcplugin".
Теперь снова запустите Xcode4, откройте проект и попробуйте выбрать компилятор. У вас должен снова появиться GCC 4.0 в списке. Теперь вы уже можете выбрать SDK 10.4 или 10.5, GCC 4.0, и у вас не должно возникнуть проблем с созданием двоичного файла PPC. Просто выберите « Другое ... » для параметра сборки « Архитектура » и вручную введите « ppc », затем измените « Действительные архитектуры », чтобы также включить « ppc ». Мы почти закончили, за исключением того, что попытка создать двоичный файл PPC с использованием GCC 4.2 и SDK 10.5 все равно не удастся.
Шаг 5. Восстановление поддержки PPC для GCC 4.2
Поскольку Apple поддерживает только платформы Intel в Xcode4, не все инструменты GCC 4.2 были созданы с поддержкой PPC. Есть один важный инструмент, который не поддерживает PPC, инструмент называется « as », и это GNU Assembler. Для компиляции двоичных файлов ppc / ppc64 с GCC 4.2 нам нужно использовать версию « as » с поддержкой ppc / ppc64. Это единственный файл (на самом деле это также символическая ссылка), который мы должны сначала отодвинуть (сделать резервную копию), прежде чем мы сможем заменить его символической ссылкой:
cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv как as.bak
sudo ln -s / Xcode3 / usr / bin / as.
Шаг 6: Нет Шага 6
Это все, ребята. Учитывая, насколько это было просто, вы можете представить, что Apple, конечно же, отказалась от поддержки SDK 10.4 / 10.5 или ppc / ppc64 или GCC 4.0, потому что это была необходимость, они отказались от всего этого, потому что хотели отказаться от этого.
Я надеюсь, что эта установка подойдет вам так же хорошо, как и мне. Мне удалось скомпилировать все свои старые проекты в Xcode4 без каких-либо серьезных изменений, за исключением того, что мне приходилось менять путь поиска здесь и там.
PS:
Может показаться странным, что я отвечаю на свой вопрос здесь, но, поскольку я узнал, как решить эту проблему сам, я хотел бы поделиться своими знаниями с сообществом, потому что я считаю, что это действительно ценный вклад в все разработчики MacOS. Этот вопрос задавали столько раз во многих местах, и до сих пор я никогда не видел, чтобы кто-нибудь предлагал подобное исправление. Делитесь богатством, распространяйте знания и так далее, вы понимаете, о чем я.
Если у вас все еще есть проблемы / вопросы:
Если у вас есть дополнительные вопросы по этой теме или у вас все еще есть проблемы с правильной сборкой старых проектов, сделайте то, для чего был разработан Stack Overflow: нажмите «Задать вопрос» в правом верхнем углу этой страницы и создайте новый вопрос. . Таким образом, все сообщество может помочь вам решить эти проблемы, поскольку проблемы могут не иметь прямого (возможно, даже косвенного) отношения к этому взлому.
Я бы порекомендовал вам упомянуть тот факт, что вы применили этот прием в самом начале своего вопроса. Возможно, вы даже захотите дать прямую ссылку на этот вопрос, чтобы люди, которые никогда не слышали об этом взломе, могли легко его найти. В противном случае большинство людей запутаются, когда вы упомянете SDK 10.4 / 10.5, PPC или GCC 4.0 в сочетании с Xcode4, который официально не поддерживает ни один из них. Вы можете получить довольно глупые комментарии вместо достойных ответов, если забудете упомянуть об этом взломе.
Пожалуйста, воздержитесь от размещения здесь ваших вопросов или проблем в качестве ответов или комментариев. Публикация их в качестве ответов не имеет смысла, потому что это не ответы, и люди не могут ответить вам, кроме как с помощью комментариев, а в комментариях может не хватить места для достойного ответа на ваш вопрос или достойного решения вашего проблема. А размещение их в качестве комментариев означает, что вы ограничены очень небольшим пространством, и отслеживать комментарии ответов будет сложно, поскольку комментарии не имеют древовидной иерархии (кроме того, они по-прежнему будут предлагать мало места для достойных ответов / решений). Спасибо.
Конечно, всегда приветствуются другие комментарии, а также лучшие ответы на исходный вопрос ;-)