A resposta rápida é: Sim, podemos!
Antes de chegar à parte " como isso é feito ", aqui estão algumas notas sobre meu patch / hack / correção. Desde o início, os principais objetivos foram:
Mantenha todas as modificações em um mínimo absoluto.
Queremos manter as configurações do Xcode o mais originais possível.
Por suposto, tente evitar corrigir ou modificar quaisquer arquivos.
Queremos que todos os arquivos permaneçam intactos e mantenham seu conteúdo original.
Tente evitar mover ou copiar arquivos, a menos que seja absolutamente necessário.
Consegui manter todos esses objetivos. Quase tudo é feito criando links simbólicos. Apenas um único link simbólico existente teve que ser substituído e vamos fazer o backup antes da substituição, apenas no caso.
Se você não for especialista em operações de terminal, recomendo fortemente que você copie / cole todos os comandos de terminal de minha resposta para seu terminal, para evitar erros de digitação. Lembre-se de que até mesmo espaçamento, citações e principalmente letras maiúsculas podem ser importantes. Copie / cole linha por linha, nunca mais de uma linha de uma vez e pressione Enter após cada linha colada para executar o comando. Se alguma operação solicitar uma senha, esta será a senha do usuário administrador atualmente conectado (suas teclas não são exibidas durante a digitação, isso é normal, não se preocupe, apenas continue digitando a senha e pressione Enter; -tente se você cometeu um erro de digitação e será avisado novamente).
Pré-requisito
Antes de começarmos, certifique-se de que as seguintes condições sejam verdadeiras:
- Você está conectado como um usuário administrador.
- Você iniciou Terminal.app (Aplicativos / Utilitários) e uma janela de terminal está aberta.
- Você tem uma cópia do Xcode3 (por exemplo, 3.2.5) e imagem de disco Xcode4 (DMG) ou instalador disponível.
- Se você já tem uma das versões do Xcode instalada, considere desinstalá-la primeiro , para que possa começar com uma configuração nova / limpa. A desinstalação do Xcode não removerá suas preferências, esquema de cores ou personalizações de ligação de teclas. O ideal é que você comece com um sistema que não tenha nenhuma versão do Xcode (nem 3 nem 4) instalada atualmente.
Etapa 1: Instalando o Xcode3
Importante : Não instale o pacote " Ferramentas do sistema " ou " Desenvolvimento Unix " do Xcode3.
Se deseja instalar o " Mac OS X 10.4 SDK " e / ou a " Documentação " é com você. Se for um Xcode3 com iOS SDKs, se você os instala ou não, depende de você.
Você é livre para escolher qualquer pasta de destino para sua instalação. Para este guia, escolhi " / Xcode3 ", mas fique à vontade para escolher um diferente. Apenas certifique-se de alterar todos os comandos do terminal de acordo.
A ordem das etapas fornecidas aqui geralmente não é muito importante, mas eu recomendo fortemente que você não troque as etapas 1 e 2. O Xcode sempre instala alguns arquivos fora da pasta de destino escolhida e confie em mim, no final você deseja que Versões Xcode4 desses arquivos em seu disco. Ao instalar o Xcode3 antes do Xcode4, você pode ter certeza de que o Xcode4 sobrescreverá esses arquivos, se necessário. Certa vez, troquei as etapas 1 e 2 e no final tive alguns problemas bastante estranhos que podem estar relacionados à ordem incorreta (não posso dizer com certeza, mas após reinstalar na ordem correta os problemas desapareceram).
Etapa 2: Instalando o Xcode4
Escolha os pacotes que desejar. Instalar " Ferramentas do sistema " é aconselhável, mas não estritamente necessário (embora a maioria das pessoas, mais cedo ou mais tarde, perca essa funcionalidade).
Novamente, fique à vontade para escolher qualquer pasta de destino de sua preferência. Para este guia eu escolhi a pasta de destino normal " / Developer ", se você escolher uma diferente, altere todos os comandos do terminal de acordo.
Etapa 3: restaurar o suporte do SDK 10.4 / 10.5
Mude para a janela do seu terminal e execute os seguintes comandos:
cd / desenvolvedor / SDKs
sudo ln -s /Xcode3/SDKs/MacOSX10.4u.sdk.
sudo ln -s /Xcode3/SDKs/MacOSX10.5.sdk.
Claro, só execute o comando para 10.4u se você também instalou o SDK 10.4 na etapa 1.
Isso é o suficiente para trazer os SDKs 10.5 (e possivelmente 10.4) de volta à lista de seleção no Xcode4. Experimente, se quiser. Abra o Xcode4, abra um projeto e tente alterar o SDK selecionado. Isso foi fácil, hein? Certifique-se de fechar o Xcode4 novamente (o aplicativo, não apenas a janela) antes de prosseguir com a próxima etapa.
Etapa 4: Restaurando o Suporte GCC 4.0
Se você não instalou o MacOS 10.4 SDK ou se não planeja usá-lo, pode pular esta etapa com segurança e prosseguir para a etapa 5.
Para usar o SDK 10.4, você terá que usar o GCC 4.0, o GCC 4.2 não funcionará. A Apple afirma que o GCC 4.2 não é compatível com o SDK 10.4, bem, se você me perguntar, isso é uma farsa. Já substituí essas limitações mais de uma vez e nunca houve o menor problema por causa disso. Seria fácil modificar o SDK 10.4 para que o Xcode permita que você use o GCC 4.2 para ele, mas meu objetivo era evitar todas as modificações de arquivo, então apenas adicionamos o suporte do GCC 4.0 de volta ao Xcode, o que também é bom, porque alguns projetos realmente dependem do GCC 4.0 (por exemplo, existem alguns bugs no GCC 4.2 que evitam que o código assembly inline válido seja compilado sem erros, enquanto o mesmo código compila perfeitamente no GCC 4.0 e no GCC 4.4).
Voltar ao terminal:
cd / Developer / usr / bin
sudo ln -s /Xcode3/usr/bin/*4.0*.
cd / Developer / usr / libexec / gcc / powerpc-apple-darwin10
sudo ln -s /Xcode3/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1.
No momento, restauramos o suporte total ao GCC 4.0, exceto pelo fato de que o GCC 4.0 ainda não pode ser selecionado no Xcode4. Isso ocorre porque o Xcode4 não tem mais o plug-in do compilador GCC 4.0. Felizmente, o plug-in Xcode3 também funciona no Xcode4, apenas a posição mudou radicalmente. A Apple agora esconde esses plug-ins dentro de um pacote e apenas os plug-ins parecem funcionar, colocando-os em sua posição anterior parece não ter efeito.
cd / Developer / Library / Xcode / PrivatePlugIns
cd Xcode3Core.ideplugin / Contents / SharedSupport / Developer / Library / Xcode / Plug-ins
sudo ln -s "/ Xcode3 / Library / Xcode / Plug-ins / GCC 4.0.xcplugin".
Agora inicie o Xcode4 novamente, abra um projeto e tente selecionar o compilador. Você deve ter o GCC 4.0 de volta à lista. Agora você já pode selecionar SDK 10.4 ou 10.5, GCC 4.0 e não deve ter problemas para construir um binário PPC. Basta selecionar " Outro ... " para a configuração de construção " Arquitetura " e inserir manualmente " ppc " e, em seguida, alterar " Arquiteturas válidas " para incluir também " ppc ". Estamos quase terminando, exceto que tentar construir um binário PPC usando GCC 4.2 e SDK 10.5 ainda irá falhar.
Etapa 5: Restaurando o suporte PPC para GCC 4.2
Como a Apple só oferece suporte a plataformas Intel no Xcode4, nem todas as ferramentas GCC 4.2 foram construídas com suporte PPC. Existe uma ferramenta importante que não tem suporte para PPC, a ferramenta é chamada " como " e é o GNU Assembler. Para compilar binários ppc / ppc64 com GCC 4.2, precisamos usar uma versão " como " com suporte a ppc / ppc64. Este é o único arquivo (na verdade, também um link simbólico) que devemos primeiro mover de lado (fazendo uma cópia de backup) antes de substituí-lo por um link simbólico:
cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as.bak
sudo ln -s / Xcode3 / usr / bin / as.
Etapa 6: Não há Etapa 6
Isso é tudo, pessoal. Considerando como isso foi fácil, você pode imaginar que a Apple certamente não abandonou o suporte SDK 10.4 / 10.5 ou ppc / ppc64 ou GCC 4.0 porque era uma necessidade, eles abandonaram tudo porque queriam abandoná-lo.
Espero que esta configuração funcione tão bem para você quanto para mim. Consegui compilar todos os meus projetos antigos no Xcode4 sem grandes alterações, exceto por ter que alterar um caminho de pesquisa aqui e ali.
PS:
Pode parecer estranho que eu responda minha própria pergunta aqui, mas como descobri como resolver esse problema sozinho, gostaria de compartilhar meu conhecimento com a comunidade, porque acredito que esta é uma contribuição realmente valiosa para todos os desenvolvedores MacOS por aí. Esta pergunta foi feita tantas vezes em tantos lugares e até agora eu nunca vi ninguém surgindo com uma solução semelhante. Divida a riqueza, divulgue o conhecimento e assim por diante, você sabe o que quero dizer.
Se você ainda tiver problemas / dúvidas:
Se você tiver perguntas adicionais sobre este tópico ou se ainda tiver problemas para construir seus projetos antigos corretamente, faça o que o Stack Overflow foi projetado para: Clique em "Fazer pergunta" no canto superior direito desta página e crie uma nova pergunta . Dessa forma, toda a comunidade pode ajudá-lo a resolver esses problemas, já que os problemas podem não estar diretamente (talvez nem mesmo indiretamente) relacionados a este hack.
Eu recomendaria que você mencionasse o fato de que aplicou esse hack no início de sua pergunta. Talvez você até queira criar um link direto para esta pergunta, para que as pessoas que nunca ouviram falar desse hack possam facilmente pesquisá-lo. Caso contrário, a maioria das pessoas ficará um tanto confusa quando você menciona SDK 10.4 / 10.5, PPC ou GCC 4.0 em combinação com Xcode4, que oficialmente não oferece suporte a nenhum deles. Você pode receber comentários estúpidos em vez de respostas decentes se esquecer de mencionar este hack.
Abstenha-se de postar suas perguntas ou problemas aqui como respostas ou comentários. Postá-los como respostas não faz sentido porque eles não são respostas e não há como as pessoas responderem a você, a não ser usando comentários, e os comentários podem não oferecer espaço suficiente para uma resposta decente à sua pergunta ou uma solução decente para sua problema. E postá-los como comentários significa que você está limitado a muito pouco espaço e rastrear comentários de resposta será difícil, pois os comentários não têm hierarquia em árvore (além disso, eles ainda oferecem pouco espaço para respostas / soluções decentes). Obrigado.
É claro que outros tipos de comentários, bem como respostas melhores para a pergunta original são sempre bem-vindos ;-)