it-swarm-pt.tech

Alternativas promissoras a serem feitas?

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

Alguém encontrou boas alternativas para que isso não complique demais o problema?

73
mike511

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

26
WaldWolf

Tenho muitos amigos que juram pelo CMake o desenvolvimento de plataforma cruzada:

http://www.cmake.org/

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

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

25
Todd Gamblin

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 no seu projeto.

15
Eric Talevich

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

Outras boas ferramentas que usei, se Ruby não é o seu lugar, são:

  • AAP (Python)
  • SCons (Python)
  • Ant (Java, configuração em XML, bastante complexo)
12
Clinton N. Dreisbach

doit é uma ferramenta python ferramenta. É baseada nos conceitos de ferramentas de construção, mas mais genérica.

  • 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 python ou comandos do Shell
12
schettino72

Esteja ciente da ferramenta de compilação ninja (v1.8.2 Set 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 arquivos de construção desde a versão 2.8. 8 (abril de 2012) e, depois, ninja agora é a ferramenta de compilação padrão usada por cmake.

Ele deve superar a ferramenta make (melhor rastreamento de dependência e também é paralelo).

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 compilação melhor for desenvolvida no futuro, que será suportada por cmake, você poderá mudar para ela convenientemente.

Observe que, para c/c ++, o aprimoramento do tempo de compilação às vezes é limitado devido aos cabeçalhos incluídos no pré-processador (principalmente ao usar bibliotecas apenas de cabeçalho, por exemplo boost & eigen ), que espero que seja substituído pela proposta de modules (em uma revisão técnica do c ++ 11 ou, eventualmente, no c ++ 1y). Confira este apresentação para obter detalhes sobre esta questão.

5
Hotschke

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

4
tonyfischetti

Depende do que você está tentando fazer. Se tudo que você deseja é dependências de destino no estilo de make e chamada de comando, o Make é realmente uma das melhores ferramentas para a tarefa. :-) O Rake é muito legal, mas pode ser desajeitado em alguns casos simples. Ant é, obviamente, uma cidade de verbosidade, mas possui um suporte melhor para a construção de linguagens semelhantes a Java (Scala e Groovy incluído). Além disso, o Ant está disponível em qualquer lugar. Essa é a principal razão pela qual eu a uso. Por funcionar consistentemente no Windows, na verdade é ainda mais multiplataforma que o Make.

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

3
Daniel Spiewak

Eu ainda prefiro fazer depois de considerar um monte de alternativas. Quando você gera automaticamente dependências por meio do compilador ou algo como o fastdep, não resta muito a 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 houver alternativas mais legíveis disponíveis. Porém, uma ferramenta que expõe uma linguagem de uso geral tem mérito, mas outra linguagem interpretada não possui (afaik). O que há de errado com o Make? pode apelar para o seu ponto de vista sobre como se afastar do make.

/ Allan

2
Allan Wind

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

Parece bastante promissor.

Sempre há Ant: http://ant.Apache.org , o que eu pessoalmente acho horrendo. É o padrão de fato para o Java desenvolvimento, no entanto.

1
davetron5000

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

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

Ou você quer ver a tecnologia subjacente? Queremos impor uma arquitetura do tipo design por contrato que é incorporada e imposta no design de código? Ou, possivelmente, o próprio idioma, por exemplo Ada e seu conceito de especificações (interfaces) e corpos (implementações)?

Que direção você seguirá definitivamente afetará os possíveis resultados dessa pergunta?

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

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

felicidades,

Roubar

0
Rob Wells

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

Possui uma GUI que mostra o gráfico de dependência 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 inicial da configuração é maior que o Make. Há uma curva de aprendizado para configurar seu primeiro fluxo usando-o. Depois disso, fica mais rápido.

0
bu11d0zer