Pergunta

Estou tentando usar boost.wave como pré-processador em vez do pré-processador que vem com o compilador.Não consigo descobrir como conseguir isso.

Estou usando o CMake como gerador do sistema de compilação e como posso especificar que meu pré-processador é boost.wave.Isso deve funcionar tanto no Windows (MSVC) quanto no Linux (gcc).

Pesquisar e pesquisar arquivos Stack Overflow não rendeu nenhuma resposta


De qualquer forma, o compilador pré-processará o arquivo.Portanto, parece que duas etapas de pré-processamento estão envolvidas aqui.

Foi útil?

Solução

Este é um processo de duas etapas.

Primeiro, você terá que dizer ao CMake para usar o Wave como um comando personalizado:use o CMake add_custom_command.Depois de definir este comando, ele será invocado sempre que as dependências especificadas para o comando personalizado forem correspondidas.

Segundo, você terá que descobrir todas as macros predefinidas e o (sistema) incluir caminhos que seu compilador normalmente usa.Wave não sabe nada sobre um compilador específico.Portanto, para pré-processar um arquivo adequadamente para um compilador específico, todas as macros predefinidas (relevantes) (que normalmente são predefinidas pelo compilador) e todos os caminhos de inclusão do sistema (que são normalmente conhecidos pelo compilador por padrão) precisam ser passados ​​durante a invocação Aceno.Se colocar todas essas opções na linha de comando do Wave for muito tedioso (e provavelmente é), você pode criar um arquivo de opções para Wave (adicione-o à linha de comando com @cfgfile).Aqui está um exemplo para MSVC 2005:

-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\include
-SC:\Program Files (x86)\Microsoft Visual Studio 8\VC\PlatformSDK\Include
-D_MT
-D_MSC_VER=1400
-D_MSC_FULL_VER=140050727
-D_MSC_EXTENSIONS
-D_M_IX86

Certamente, você também pode adicionar outras opções para o Wave aqui.Ter diferentes arquivos de configuração para diferentes compiladores deve facilitar o gerenciamento de dentro do CMake.

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