Pergunta

Como você porto C ++ programas com makefile feitos de GNU C ++ em Linux para o Visual C ++?

Foi útil?

Solução

Uma coisa que posso sugerir é usar CMake. Se você implementar seu sistema de construção com CMake para gerar automaticamente os makefiles para GCC em Linux, leva apenas pequenas modificações para auto-gerar projetos e soluções para VC ++.

É claro, isto significa aprender uma nova ferramenta de construção inteiro, por isso pode não ser para você. É apenas uma sugestão.

Outras dicas

Eu não sei sobre uma maneira fácil de converter simplesmente de um para outro, mas ..

Assumindo que você use apenas ANSI C / C ++ recursos, geralmente não é necessário para converter o makefile, basta olhar o que .c / .cpp arquivos estão em-lo e adicioná-los ao projeto VS; você também terá que verificar sobre as opções do compilador e macros definidos, para colocá-los dentro do projeto VS. Eu fiz isso para compilar libs como expatriados, freetype, agg e outros, sem problemas.

Portando o sistema de compilação: Você pode usar uma porta Windows do GNU make, e mudar o makefile para invocar o Visual C ++ ferramentas de linha de comando (cl.exe, link.exe, lib.exe, etc.) quando a construção em Windows e as ferramentas GNU compiler ao construir no Linux. A dificuldade desta abordagem depende da complexidade dos makefiles.

Portar o código: Isso depende do que APIs e bibliotecas que você está usando, e que compilador avisos / erros / peculiaridades que você vai encontrar. Para uma resposta mais específica, uma pergunta mais específica.

CMake foi mencionado. Eu tenho usado CMake e compilado com sucesso o projeto Visual Studio resultante. Eu encontrei a documentação CMake muito inútil - Eu tive que pedir um usuário existente - eo manual oficial (que custa dinheiro) foi esgotado no momento. Além disso, o projeto Visual Studio produziu foi muito rigidamente formatado de acordo com o modelo preferido por quem escreveu o conversor. Eu era incapaz de descobrir como personalizar opções de projeto ou arquivos de origem do grupo.

Eu regularmente cross-compilação em Visual Studio e G ++. Para a maior parte, você só precisa adicionar todos os arquivos de origem e arquivos de cabeçalho em um projeto Visual Studio ( 'Adicionar Existing Files', e adicione sua árvore de origem inteira) e, em seguida, compilá-lo. Normalmente você vai obter erros, então você começar a corrigir erros de lá. Se você usou bibliotecas específicas de plataforma, você pode ser portabilidade preso a uma alternativa ou remover recursos.

Uma outra palavra de cautela: Visual Studio e G ++ têm diferentes peculiaridades do compilador. Para a maior parte, ambos conformar excelentemente com o padrão C ++, mas um pouco fora do padrão de código que funciona em um pode não funcionar em outro. Eu descobri que isso seja particularmente verdadeiro quando se trata de modelos, com o Visual Studio sendo bizarramente permissiva de erros de sintaxe em muitos casos.

CMake tem a sutileza de gerar projeto visual studio.

Se você não precisa que, sugiro sistema de compilação Meson. Muito mais agradável, proposta semelhante. Requer python3 e ninja, mas ninguém é perfeito. :)

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