Pergunta

Eu uso o Make and Makefiles há muitos anos e, embora o conceito seja sólido, a implementação tem algo a desejar.

Alguém encontrou boas alternativas a fazer que não compliquem demais o problema?

Foi útil?

Solução

Confira SCons.Por exemplo, Doom 3 e Blender fazem uso dele.

Outras dicas

Tenho muitos amigos que confiam no CMake para desenvolvimento multiplataforma:

http://www.cmake.org/

É o sistema de compilação usado para VTK (entre outras coisas), que é uma biblioteca C++ com ligações multiplataforma Python, Tcl e Java.Acho que é provavelmente a coisa menos complicada que você encontrará com tantos recursos.

Você sempre pode tentar o padrão ferramentas automáticas.Os arquivos Automake são muito fáceis de montar se você estiver executando apenas em Unix e se usar C/C++.A integração é mais complicada e o autotools está longe de ser o sistema mais simples de todos os tempos.

Alguns dos projetos do GNOME estão migrando para waf.

É baseado em Python, como o Scons, mas também independente - então, em vez de exigir que outros desenvolvedores tenham sua ferramenta de construção favorita instalada, basta copiar o script de construção independente em seu projeto.

Eu recomendo usar Ancinho.É a ferramenta mais fácil que encontrei.

Outras boas ferramentas que usei, porém, se Ruby não é sua praia, são:

  • AAP (Pitão)
  • SCons (Pitão)
  • Formiga (Java, configuração em XML, bastante complexo)

faça isso é uma ferramenta python.É baseado nos conceitos de ferramentas de construção, porém mais genéricos.

  • você pode definir como uma tarefa/regra está atualizada (não apenas verificando carimbos de data e hora, os arquivos de destino não são necessários)
  • dependências podem ser calculadas dinamicamente por outras tarefas
  • as ações da tarefa podem ser funções python ou comandos shell

Esteja ciente do ninja ferramenta de construção (v1.8.2 de setembro de 2017) que é influenciada por tup e redo.

O gerador de arquivo de construção cmake (por exemplo.para Unix Makefiles, Visual Studio, XCode, Eclipse CDT, ...) também pode gerar ninja build arquivos desde a versão 2.8.8 (abril de 2012) e, afaik, ninja agora é até mesmo a ferramenta de compilação padrão usada por cmake.

É suposto superar o make ferramenta (melhor rastreamento de dependências e também paralelizada).

cmake é uma ferramenta já bem estabelecida.Você sempre pode escolher posteriormente a ferramenta de construção sem modificar seus arquivos de configuração.Portanto, se uma construção melhor for desenvolvida no futuro, a qual será apoiada por cmake você pode mudar para ele convenientemente.

Observe que para c/c++ a melhoria do tempo de compilação às vezes é limitada devido aos cabeçalhos incluídos através do pré-processador (em particular ao usar bibliotecas somente de cabeçalho, por exemplo impulsionar & próprio) que, esperamos, será substituída pela proposta de módulos (em uma revisão técnica do c++11 ou eventualmente em c++1y).Veja isso apresentação para obter detalhes sobre este assunto.

Eu escrevi uma ferramenta chamada interesse que tentou tornar a escrita de coisas do tipo makefile muito fácil de ler e escrever.

Depende do que você está tentando fazer.Se todos você deseja são dependências de destino no estilo make e invocação de comando, então Make é na verdade uma das melhores ferramentas para a tarefa.:-) Rake é muito bom, mas pode ser desajeitado em alguns casos simples.Ant é obviamente uma cidade de verbosidade, mas tem melhor suporte para a construção de linguagens semelhantes a Java (incluindo Scala e Groovy).Além disso, Ant está disponível em todos os lugares.Essa é a principal razão pela qual eu o uso.Por funcionar de forma consistente no Windows, é ainda mais multiplataforma do que o Make.

Se você deseja gerenciamento de dependências para bibliotecas semelhantes a Java, Maven é a escolha canônica, mas eu pessoalmente gosto muito mais do Buildr.É mais rápido e fácil de personalizar (é baseado no Rake).Infelizmente, ainda não é tão onipresente quanto o Maven.

Eu ainda prefiro fazer depois de ter considerado um monte de alternativas.Quando você gera dependências automaticamente por meio do compilador ou algo como fastdep, não há muito o que fazer.Em particular, não quero que meu script de construção esteja vinculado à linguagem de implementação e não gosto de escrever coisas em XML quando alternativas mais legíveis estão disponíveis.Uma ferramenta que expõe uma linguagem de propósito geral tem mérito, mas outra linguagem interpretada não (afaik). O que há de errado com o Make? pode apelar ao seu ponto de vista sobre se afastar do make.

/Allan

O sistema make do Ruby é chamado rake: http://rake.rubyforge.org/

Parece bastante promissor.

Sempre há Formiga: http://ant.apache.org, o que eu pessoalmente acho horrível.No entanto, é o padrão de fato para desenvolvimento Java.

Não tenho certeza se você está fazendo a pergunta correta aqui.

Você está atrás de uma make simplificada?Nesse caso, você precisa contratar alguém que esteja familiarizado com make para criar uma série de (M|m)akefiles que simplificarão seu problema.

Ou você está querendo dar uma olhada na tecnologia subjacente?Queremos impor uma arquitetura do tipo design por contrato que é incorporada e aplicada no design do código?Ou possivelmente, a própria linguagem, por ex.Ada e seu conceito de especificações (interfaces) e corpos (implementações)?

A direção que você segue certamente afetará os resultados potenciais de tal pergunta?

Basicamente, novas maneiras de construir sistemas apenas a partir dos componentes que realmente mudaram versus a adoção de novas tecnologias que possuem tais mecanismos incorporados desde o projeto.

Desculpe, não é uma resposta direta.Só queria tentar fazer com que você avaliasse qual caminho você queria seguir.

saúde,

Roubar

FlowTracer da RTDA é outra boa opção que vi usada comercialmente em um ambiente de grande escala (dezenas de milhares de trabalhos): http://www.rtda.com/flowtracer-design-flow-infraestrutura-software

Possui uma GUI que mostra o gráfico de dependências com caixas codificadas por cores para trabalhos e ovais para arquivos.Quando o número de trabalhos e arquivos aumenta, uma ferramenta baseada em GUI como o FlowTracer é praticamente essencial.

O custo de configuração inicial é maior que o Make.Há uma curva de aprendizado para configurar seu primeiro fluxo usando-o.Depois disso, fica mais rápido.

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