Pergunta

Estou desenvolvendo um DSL com o seu próprio editor gráfico. Esses arquivos têm uma extensão .own. Eu também tenho uma pequena ferramenta que compila .own arquivos em arquivos .h.

X.own -.> X.h e X / * h

Eu escrevi um arquivo .rules simples para iniciar a geração.

Meu problema é o seguinte : A maioria dos meus arquivos de origem incluem X.h, mas uma mudança no X.own não significa que o X.h gerado (ou qualquer outro arquivo gerado) será diferente. Este é tratado pelo gerador através do uso de arquivos temporários e comparação de arquivo. Mas Visual Studio parece não saber como lidar com tudo isso. Se eu definir o "arquivo de saída (s)" propriedade para o arquivo certo (s), ele sempre assume que será alterado. Se eu não fizer isso, ele gera o seu processo de construção assumindo que eles não será!

Como posso fazer as coisas direito?

1) ferramenta de Lançamento compilação personalizada

2) Calcular processo de construção com base em dependências

Foi útil?

Solução 2

resposta

O jheriko é interessante, porque fornece uma forma de ferramenta de lançamento personalizado, em seguida, gerar dependências de compilação. Mas não é muito útil, porque então você perde todas as possibilidades de uso "ferramentas de compilação personalizado" kit de ferramentas, em que você pode

  • escolha para arquivos sempre compilação com alguma extensão precisa
  • pular manualmente compilação personalizado para um arquivo específico em uma configuração de projeto particular (e visualizar esta decisão)

Não há nenhuma maneira (nenhum ou pelo menos eu encontrei) para "ter tudo". A única maneira que eu encontrei é ter a ferramenta de compilação personalizada retornar um número diferente de zero quando os arquivos foram atualizados, com uma mensagem para o usuário explicando que é não um erro e convidando-o para lançamento construir novamente. A ferramenta da próxima vez, compilação personalizado é lançado novamente (não ideal, mas o uso de ferramentas i é bastante rápido), mas modifica nenhum novo arquivo e processo de construção continua, usando dependências válidos.

Nota: a abordagem descrita acima não funciona com IncrediBuild, que parece ignorar ordem de construção do projeto

.

Outras dicas

Não use as opções da ferramenta de compilação personalizada mas em vez disso configurá-lo como um evento de pré-compilação para a solução (isso pode levar uma linha de comando geral, assim como a ferramenta de compilação personalizada). Desta forma MSVS não irá examinar os arquivos gerados. Enquanto eles são #included ou listado na solução explorador eles devem ser compilados bem como a geração dos arquivos .h vai acontecer antes de qualquer outra compilação.

I encontrar a ferramenta de compilação personalizado não é tão útil como os eventos de compilação pré e pós em geral, por causa da maneira que espera que os arquivos a serem gerados ou modificados. Você pode encontrar esta ferramenta útil para outras coisas no futuro (por exemplo, para comprimir o .exe depois de construir, para gerar outras dependências corretamente, para garantir que os arquivos estão no lugar etc ...)

Há um diagrama agradável mostrando onde encontrar essas opções nas propriedades de soluções aqui

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