Quais são algumas recomendações para portar código C ++ para os MacOS? [fechadas]

StackOverflow https://stackoverflow.com/questions/145621

  •  02-07-2019
  •  | 
  •  

Pergunta

Para um próximo projeto, existem planos para portar o código existente C ++ que compila no Windows e Linux para os MacOS (leopardo). O software é um aplicativo de linha de comando, mas um front-end GUI pode ser planejado. O MacOS utiliza o g ++ compilador. Por ter o mesmo compilador como Linux, ele não parece que não haveria quaisquer problemas, mas sempre há.

Existe alguma recomendação ou problemas que atente para durante a porta?

Foi útil?

Solução

Será que o seu aplicativo tem uma interface gráfica, e qual (nativo / Qt / Gtk +)?

Se não, os problemas que atente para (em comparação com Linux) estão principalmente na área de ligação dinâmica. OS X usa '-dylib' e '-bundle' e na verdade tem dois tipos de bibliotecas dinâmicas (carregável tempo de execução e os normais). Linux tem apenas um tipo (-shared), e é mais flexível neste qualquer maneira.

Se seu aplicativo tem uma interface gráfica, você vai precisar recodificar a coisa toda em Cocoa, usando Objective-C. Ou seja, você estará em um novo idioma também. Algumas pessoas (como MS) têm usado carbono (C API ++), mas ele está sendo extinto. Eu não recomendo isso para novos projetos.

Seu melhor sorte está usando Qt ou Gtk +. Uma porta Gtk + nativa tem sido (re) anunciou apenas alguns dias atrás (ver Imendio ).

P.S. OS X faz de binários X11 curso executados, também, mas empurrando que, para qualquer um dos seus clientes pode ser um caminho difícil. Eles são usados ??para a interface Aqua, e produtiva com isso. Considere X11 apenas uma solução muito curto prazo.

p.p.s. O número de libs addon de código aberto que vêm com o OS X é limitado, e suas versões podem falta por trás. Considerando que, no Linux você pode facilmente exigir que os usuários têm 'libxxx v.y.y' instalado, no OS X, existem embalagens múltiplas abordagens (Fink, MacPorts) e para uma ferramenta comercial são esperadas as bibliotecas necessárias para ser incluída no pedido. OS X oferece 'pacotes de aplicativos' e 'estruturas' para isso (cópias locais, tornando a aplicação auto-suficiente). Linux não tem um tal conceito. Isto terá um grande efeito sobre o seu sistema de compilação bem; talvez você vai querer tentar algo como SCons para todas as plataformas?

Outras dicas

Você não precisa recode tudo para Objective-C. Há uma estranha abastardamento de C ++ e Objective-C que lhe permitirá usar o código C ++ a partir de Objective-C, para que você possa inteligente dividir o modelo de código em C ++ e ver / código do controlador em Objective-C. Para usar Objective-C, apenas o sufixo seus arquivos de código-fonte com .mm vez de .m, e você pode misturar C mais legal ++ e Objective-C sintaxe mesmo na mesma linha.

Nós não foram portar para MacOS, mas foram portar para vários Unixes de Linux, a área de trabalho principal tem sido a instalação e sistemas de inicialização, assim que esperar para colocar a maior parte do trabalho lá (dado o seu já existente já está portáveis ??entre Linux e Windows).

Macintosh (MacOSX) é essencialmente FreeBSD sob o capô (embora tenha sido mexido). Há algumas diferenças nos sistemas de programação entre o Linux eo FreeBSD. Principalmente essas diferenças existem entre as várias chamadas de sistema ... então o quanto isso afeta você será determinado pelo que a sua aplicação está fazendo e que tipo de sistema OS chama você está fazendo durante a execução.

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