Pergunta

Existe uma maneira de utilizar o compilador GCC e ainda ser capaz de desenvolver através do IDE do Visual Studio?

Nosso projeto é multiplataforma e frequentemente tenho problemas com meus colega porque estou verificando um código que não é compatível com os padrões (isso pode ser atribuído ao compilador VS!).

Eu ainda gostaria de poder compilar usando o compilador MS, para poder continuar depurando, etc., mas gostaria de poder trocar para compilar usando o GCC, apenas para ter certeza de que não estou quebrando a compilação em outras plataformas.

Isso é possível?

Foi útil?

Solução

O que estou prestes a sugerir ainda exigiria um makefile, por isso estou repetindo parcialmente o conselho de uma resposta anterior.Ou, como também foi mencionado anteriormente, talvez você já tenha um makefile e, nesse caso, você terá ainda menos etapas para realizar o que estou prestes a descrever.

Depois de conhecer seu comando de linha de comando específico do Windows para invocar make ou g++ em seu código, você cria um "Evento de Pré-Build" em seu projeto do Visual Studio.("Propriedades do projeto >> Propriedades de configuração >> Eventos de construção >> Evento de pré-construção").

O evento de pré-construção pode chamar um script de arquivo bat ou qualquer outro script em sua máquina, e esse script poderá retornar um código de erro.Essencialmente, “script OK” ou “script FAILED” é a extensão da quantidade de comunicação que seu script pode ter de volta ao visual studio.

O script não vê automaticamente todas as variáveis ​​de ambiente do Visual Studio (como $(InputDir), $(ProjectDir), $(SolutionName), etc.), no entanto, você pode usar essas variáveis ​​ao especificar como chamar o script.Em outras palavras, você pode passar esses valores para o script como argumentos.

Configure isso para que toda vez que você compilar no Visual Studio, o evento de pré-compilação tentará PRIMEIRO executar make/g++ em seu código.Se o seu script (aquele que chama make/g++) detectar algum problema, então o script retornará um erro e a compilação poderá ser PARADA imediatamente.O script pode ser impresso em stdout ou stderr e essa saída deve estar visível para você na janela de saída do Visual Studio Build (a janela que geralmente mostra coisas como "========== Build:3 tiveram sucesso, 0 falharam").

Você pode imprimir o script:

"BUILD FAILED, código não portátil detectado, make/g++ retornou o seguinte:........."

Dessa forma, você não precisa se lembrar de alternar periodicamente do Visual Studio para a linha de comando.Isso será feito automaticamente para você sempre que você construir.

Outras dicas

Certamente existem maneiras de fazer isso – é assim que desenvolvemos para o PS3 com o conjunto de ferramentas da Sony (que é baseado no gcc).Não sei exatamente como isso funciona, mas se integra perfeitamente ao VS.

Eu acho que o que você precisa fazer é configurá-lo para construir com um makefile (provavelmente o mais fácil) ou escrever um programa wrapper que converta argumentos VC em argumentos gcc.Além disso, se você deseja a saída de erro/aviso no formato VS (para poder clicar nele e obter esse arquivo/linha no editor), você precisa de algo para converter a saída.

Essas coisas podem ajudá-lo em uma discussão relacionada Sobre o uso do VS com a versão WRS/VXWORKS das ferramentas do GCC:

Observe especialmente o programa vinculado lá que converte a saída de erro.

Não acho que exista uma opção simples, porque as opções de linha de comando do gcc são muito diferentes das do VS.Em qualquer caso, apenas executar o compilador não será trivial, já que seu sistema de compilação provavelmente define um monte de definições de pré-processador e variáveis ​​de compilação que precisam ser definidas para que a compilação seja bem-sucedida.

Se o seu colega está trabalhando no Unix, ele provavelmente tem um sistema de compilação baseado em make, scons ou cmake.Você pode usar Cygwin para instalar o conjunto de ferramentas padrão do Unix no Windows, incluindo gcc, make, flex, bison e todos os outros recursos do Unix.Existem versões nativas de scons e cmake, mas elas tentarão usar o VS, então isso não vai te ajudar.Não tentei instalá-los através do Cygwin para ver se isso os força ao gcc, mas isso pode não ser relevante para você.

Criar um sistema make que use o compilador VS é possível, mas doloroso (já estive lá, fiz isso).E uma pergunta diferente.;)

Você pode então usar um buildstep especial para executar a compilação do gcc de dentro do VS.Seria melhor ter um destino de compilação separado (como Debug e Release), e você pode criá-los nos arquivos do projeto (eles são apenas arquivos ASCII, dê uma olhada), mas não sou uma pessoa de VS suficiente para sei como isso seria fácil de fazer.Mantê-lo atualizado será um pouco doloroso, você pode querer escrever um script para criá-lo automaticamente.

Tive que manter makefiles separados para compilar com o gcc.Há um custo inicial associado ao aprendizado, mas você se beneficiará do conhecimento íntimo do seu código e das diferenças entre o VS C++ e o gcc.Quando fiz isso, estava usando o VC 6, então pode haver uma maneira melhor agora com o VS 2005.

Experimente o Cygwin, desde que você configure todos os seus Makefiles corretamente, você sempre pode tentar compilar tanto no VS quanto no GCC

depende da complexidade dos arquivos do seu projeto:

você definitivamente precisa de um ambiente gcc como o cygwin.

  • para projetos pequenos ou compilação de arquivo único, você pode usar uma ferramenta de construção personalizada (arquivo de regras)

  • para grandes projetos/soluções, estou gerando automaticamente um autotools configure/makefile a partir do arquivo vcproj/sln e compilando-o dentro do IDE.arquivos/linhas de origem de avisos e erros do gcc são traduzidos para seu equivalente IDE (clicável na janela de saída).

Presumivelmente você já está usando makefile para construir seu projeto, já que é multiplataforma.Basta tornar seu projeto VS um projeto makefile com diferentes configurações de projeto que iniciam o makefile usando parâmetros diferentes para indicar se uma compilação é ou não para MSVC ou GCC.

Se a compilação do makefile do MSVC for capaz de criar arquivos de depuração (PDB) - o que deveria ser capaz de fazer, o VS Debugger também funcionará perfeitamente.

Então, construir usando o GCC dentro do Visual Studio é tão simples quanto selecionar o menu suspenso de configuração 'GCC' na barra de ferramentas.

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