Pergunta

Qual seria a melhor maneira de escrever Objective-C na plataforma Windows?

Cygwin e gcc?Existe uma maneira de integrar isso de alguma forma ao Visual Studio?

Nesse sentido - há alguma sugestão sobre como vincular e usar o SDK do Windows para algo assim.É uma fera diferente, mas sei que posso escrever assembly e link nas DLLs do Windows, dando-me acessibilidade a essas chamadas, mas não sei como fazer isso sem pesquisar no Google e obter instruções passo a passo.

Alguém conhece um bom recurso on-line ou de livro para fazer ou explicar esse tipo de coisa?

Foi útil?

Solução

Expandindo as duas respostas anteriores, se você deseja apenas o Objective-C, mas não qualquer uma das estruturas Cocoa, o gcc funcionará em qualquer plataforma.Você pode usá-lo através do Cygwin ou obter o MinGW.No entanto, se você deseja os frameworks Cocoa, ou pelo menos um subconjunto razoável deles, então GNUStep e Cocotron são suas melhores apostas.

Cocotron implementa muitas coisas que o GNUStep não implementa, como CoreGraphics e CoreData, embora eu não possa garantir o quão completa é sua implementação em uma estrutura específica.O objetivo deles é manter o Cocotron atualizado com a versão mais recente do OS X para que qualquer programa viável do OS X possa ser executado no Windows.Como o GNUStep normalmente usa a versão mais recente do gcc, eles também adicionam suporte para Objective-C++ e muitos recursos do Objective-C 2.0.

Não testei esses recursos com o GNUStep, mas se você usar uma versão suficientemente nova do gcc, poderá usá-los.Não consegui usar Objective-C++ com GNUStep há alguns anos.No entanto, o GNUStep compila a partir de praticamente qualquer plataforma.Cocotron é um projeto muito centrado no Mac.Embora provavelmente seja possível compilá-lo em outras plataformas, ele vem com arquivos de projeto XCode, não makefiles, então você só pode compilar seus frameworks prontos para uso no OS X.Ele também vem com instruções sobre como compilar aplicativos do Windows no XCode, mas não em qualquer outra plataforma.Basicamente, provavelmente é possível configurar um ambiente de desenvolvimento Windows para o Cocotron, mas não é tão fácil quanto configurar um para o GNUStep, e você estará por conta própria, então o GNUStep é definitivamente o caminho a seguir se você estiver desenvolvendo em Windows em vez de apenas para Windows.

Pelo que vale, Cocotron é licenciado sob a licença MIT e GNUStep é licenciado sob a LGPL.

Outras dicas

Você pode use Objective C dentro do ambiente Windows.Se você seguir estas etapas, deverá funcionar perfeitamente:

  1. Visite a Site GNUstep e baixe GNUstep MSYS Subsystem (MSYS para GNUstep), GNUstep Core (Bibliotecas para GNUstep), e GNUstep Devel
  2. Após baixar esses arquivos, instale nessa ordem, ou você terá problemas com a configuração
  3. Navegar para C:\GNUstep\GNUstep\System\Library\Headers\Foundation1 e garantir que Foundation.h existe
  4. Abra um prompt de comando e execute gcc -v para verificar isso GNUstep MSYS está instalado corretamente (se você receber um erro de arquivo não encontrado, certifique-se de que o bin pasta de GNUstep MSYS está em seu PATH)
  5. Use este programa simples "Hello World" para testar a funcionalidade do GNUstep:

    #include <Foundation/Foundation.h>
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    
  6. Volte para o prompt de comando e cd onde você salvou o programa "Hello World" e depois compile-o:2

    gcc -o helloworld.exe <HELLOWORLD>.m -I /GNUstep/GNUstep/System/Library/Headers -L /GNUstep/GNUstep/System/Library/Libraries -std=c99 -lobjc -lgnustep-base -fconstant-string-class=NSConstantString
    
  7. Finalmente, no prompt de comando, digite helloworld para executá-lo

Tudo de bom e divirta-se com Objective-C!


NOTAS:

  1. Usei o caminho de instalação padrão - ajuste sua linha de comando de acordo
  2. Certifique-se de que o caminho da sua pasta seja semelhante ao meu, caso contrário você receberá um erro

Também:

O Cocotron é um projeto de código aberto que visa implementar uma API Objective-C multiplataforma semelhante à descrita pela documentação Cocoa da Apple Inc.Isso inclui o tempo de execução AppKit, Foundation, Objective-C e APIs de suporte, como CoreGraphics e CoreFoundation.

http://www.cocotron.org/

WinObjC?Windows Bridge para iOS (anteriormente conhecido como ‘Projeto Islandwood’).

Windows Bridge para iOS (também conhecido como WinObjC) é um projeto de código aberto da Microsoft que fornece um ambiente de desenvolvimento Objective-C para Visual Studio/Windows.Além disso, WinObjC fornece suporte para compatibilidade de API iOS.Embora o lançamento final aconteça no final deste outono (permitindo que a ponte aproveite os novos recursos de ferramentas que serão fornecidos com a próxima atualização do Visual Studio 2015),

A ponte está disponível para a comunidade de código aberto agora em seu estado atual.Entre agora e o outono.A ponte iOS como um projeto de código aberto sob a licença do MIT.Dada a ambição do projeto, facilitar aos desenvolvedores iOS a criação e execução de aplicativos no Windows.

Salmaan Ahmed tem uma postagem detalhada sobre o Windows Bridge para iOS http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/ discutindo o compilador, o tempo de execução, a integração do IDE e o que é e o que não é a ponte.O melhor de tudo é que o código-fonte da ponte iOS está disponível GitHub agora.

A ponte iOS oferece suporte a aplicativos do Windows 8.1 e do Windows 10 desenvolvidos para arquiteturas de processador x86 e x64 e em breve adicionaremos otimizações de compilador e suporte para ARM, que adiciona suporte móvel.

Tenho sentimentos confusos sobre o projeto Cocotron.Fico feliz que eles estejam lançando o código-fonte e compartilhando, mas não acho que estejam fazendo as coisas da maneira mais fácil.

Exemplos.
A Apple liberou o código-fonte para o tempo de execução objetivo-c, que inclui propriedades e coleta de lixo.O projeto Cocotron, entretanto, tem sua própria implementação do tempo de execução do objetivo-c.Por que se preocupar em duplicar o esforço?Existe até um arquivo de projeto do Visual Studio que pode ser usado para construir um arquivo objc.dll.Ou se você for realmente preguiçoso, basta copiar o arquivo DLL de uma instalação do Safari no Windows.

Eles também não se preocuparam em aproveitar o CoreFoundation, que também é de código aberto da Apple.Eu postei um pergunta sobre isso, mas não recebeu resposta.

Acho que a melhor solução atual é pegar o código-fonte de várias fontes (Apple, CocoTron, GnuStep) e mesclá-lo com o que você precisa.Você terá que ler muitas fontes, mas valerá a pena o resultado final.

Estou ciente de que esta é uma postagem muito antiga, mas encontrei uma solução que só foi disponibilizada mais recentemente E permite quase todos os recursos do Objective-C 2.0 na plataforma Windows.

Com o advento do gcc 4.6, o suporte para recursos da linguagem Objective-C 2.0 (blocos, sintaxe de ponto, propriedades sintetizadas, etc.) foi adicionado ao compilador Objective-C (veja as notas de lançamento para detalhes completos).Seu tempo de execução também foi atualizado para funcionar quase de forma idêntica ao tempo de execução Objective-C 2.0 da própria Apple.Resumindo, isso significa que (quase) qualquer programa que compile legitimamente com o Clang em um Mac também compilará com o gcc 4.6 sem modificação.

Como observação lateral, um recurso que não está disponível são os literais de dicionário/array/etc, pois todos eles são codificados no Clang para usar as classes NSDictionary, NSArray, NSNumber, etc. da Apple.

No entanto, se você estiver feliz em viver sem as extensas estruturas da Apple, você poderá.Conforme observado em outras respostas, o GNUStep e o Cocotron fornecem versões modificadas das bibliotecas de classes da Apple, ou você pode escrever as suas próprias (minha opção preferida).

MinGW é uma forma de obter o GCC 4.6 na plataforma Windows e pode ser baixado em O site do MinGW.Ao instalá-lo, certifique-se de incluir a instalação de C, C++, Objective-C e Objective-C++.Embora opcional, também sugeriria instalar o ambiente MSYS.

Uma vez instalado, o código-fonte Objective-C 2.0 pode ser compilado com:

gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)

MinGW também inclui suporte para compilação de aplicativos GUI nativos do Windows com o -mwindows bandeira.Por exemplo:

g++ -mwindows MyFile.cpp

Ainda não tentei, mas imagino que se você agrupar suas classes Objective-C em Objective-C++ na camada mais alta possível, você poderá entrelaçar com êxito a GUI nativa do Windows C++ e Objective-C, tudo em um único aplicativo do Windows.

Confira WinObjC:

https://github.com/Microsoft/WinObjC

É um projeto oficial de código aberto da Microsoft que se integra ao Visual Studio + Windows.

Se você quiser apenas experimentar, há um compilador Objective-C para .NET (Windows) aqui: qckapp

Você pode obter um compilador objetivo c que funcionará com o Windows e funcionará bem com o Visual Studio 2008\2010 aqui.

open-c flite

Basta baixar a fonte mais recente.Você não precisa construir todo o CF-Lite, existe uma solução chamada objc.sln.Você precisará corrigir alguns dos caminhos de inclusão, mas então ele será construído perfeitamente.Existe até um projeto de teste incluído para que você possa ver alguns arquivos object-c .m sendo compilados e funcionando no visual studio.Uma coisa triste é que ele só funciona com Win32 e não com x64.Há algum código assembly que precisaria ser escrito para x64 para suportar isso.

Uma tentativa recente de portar o Objective C 2.0 para o Windows é a Subjetivo projeto.

Do Leiame:

Subjetivo é uma tentativa de trazer o objetivo C 2.0 com suporte de arco ao Windows.

Este projeto é um garfo de Objc4-532.2, o tempo de execução do objetivo C que é enviado com o OS X 10.8.5.A porta pode ser compilada no OS X usando o LLVM-clang combinado com o ligante Mingw.

Existem certas limitações, muitas das quais são uma questão de trabalho extra, enquanto outras, como exceções e blocos, dependem de um trabalho mais sério em projetos de terceiros.As limitações são:

• Somente 32 bits - 64 bits está em andamento

• Somente vinculação estática: a vinculação dinâmica está em andamento

• Sem fechamentos/bloqueios - até que o libdispatch os suporte no Windows

• Sem exceções - até que o clang os suporte no Windows

• Nada de GC antigo - até que alguém se importe...

• Internos:Sem vtables, sem suporte ao GDB, apenas um Malloc, sem otimizações - algumas dessas coisas estarão disponíveis sob a construção de 64 bits.

• Atualmente é necessário um compilador clang corrigido;O patch adiciona -fobjc -runtime = subj sinalizador

O projeto está disponível em GitHub, e há também um fio no Grupo Cocotron, descrevendo alguns dos progressos e problemas encontrados.

Obtenha o GNUStep aqui

Obter MINGW aqui

Instale o Mingw Instale o gnustep e depois teste

Se você estiver confortável com o ambiente do Visual Studio,

Projeto pequeno:JGRASP com GCC Large Project:Cocotron

Ouvi dizer que existem emuladores, mas só consegui encontrar o emulador Apple II http://virtualapple.org/.Parece limitado a jogos.

Em primeiro lugar, esqueça GNUStep ferramentas.Nenhum Gestor de projeto nem Centro de Projetos pode ser chamado de IDE.Com todo o respeito, parece que os caras do GNUStep projeto estão paralisados ​​no final dos anos 80 (que é quando Próxima Etapa apareceu pela primeira vez).

Vim

ctags apoiar Objective-C desde r771 (certifique-se de escolher a versão 5.9 de pré-lançamento e adicionar --langmap=ObjectiveC:.m.h para a linha de comando, consulte aqui), então você terá uma navegação decente de conclusão de código/tag.

Aqui está um breve como sobre como adicionar suporte a Objective-C ao plugin tagbar do Vim.

Emacs

O mesmo se aplica a etags enviado com o Emacsen moderno, então você pode começar com o Emacs Modo Objetivo C. YASnippet fornecerá modelos úteis:

YASnippet objc-mode

e se você quiser algo mais inteligente do que o preenchimento de código básico baseado em tags, dê uma olhada neste pergunta.

Eclipse

CDT apoia Makefileprojetos baseados em:

enter image description here

- então, tecnicamente, você pode criar seus projetos Objective-C prontos para uso (no Windows, você precisará do Cygwin ou MinGW conjunto de ferramentas).O único problema é o editor de código que reportará muitos erros em relação ao que ele considera puro C código (a verificação de código em tempo real pode ser desativada, mas ainda assim...).Se quiser um realce de sintaxe adequado, você pode adicionar Eclim para o seu Eclipse e aproveite todos os bons recursos de ambos Eclipse e Vim (Veja acima).

Outro promissor Eclipse plugin é Colorido, mas ainda não suporta Objective-C.Sinta-se à vontade para registrar uma solicitação de recurso.

Liso

Liso, entre outras características de um ótimo IDE, faz apoiar Objetivo-C.Embora seja bastante complexo de aprender (não tão complexo quanto o Emacs), acredito que esta seja sua melhor opção, desde que você não se importe em comprá-lo (o preço é bastante acessível).

Além disso, possui um Plug-in Eclipse que pode ser usado como uma alternativa ao editor independente.

KDevelop

Há rumores de que existe um KDevelop correção (15 anos, mas quem se importa?).Eu pessoalmente não acho KDevelop é superior em recursos em comparação com Emacsen, então eu não me incomodaria em tentar.


O acima também se aplica ao desenvolvimento de Objective-C no Linux, uma vez que todas as ferramentas mencionadas são mais ou menos portáveis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top