Alguma boa ferramenta de construção para um projeto C++, que possa substituir o make?

StackOverflow https://stackoverflow.com/questions/54674

  •  09-06-2019
  •  | 
  •  

Pergunta

Estou me perguntando se existe alguma ferramenta legal e elegante para substituir o GNU Autotools ou Make para construir um projeto C++ muito grande, que é algo muito complicado de usar.

É simples gerar todos os arquivos que o Autotools exige se o projeto for pequeno, mas se o código fonte estiver dividido em vários diretórios, com múltiplas bibliotecas de terceiros e muitas dependências, você cai no "Inferno do Autotools".

obrigado por qualquer recomendação

Foi útil?

Solução

O Mecanismo JavaScript do Google V8 é escrito em C++ e usa SCons, então acho que é um voto a favor.

Outras dicas

CMake?(gera makefiles, portanto, tecnicamente não é um substituto como tal).

Eu também vi "SCons"apareceu em alguns lugares recentemente.Ainda não criei nada com ele.

Dê uma olhada waf.

Acho que você pode considerá-lo um substituto completo para marcas e ferramentas automáticas.É baseado em python.Uma coisa que gosto no waf é que o script waf em si é independente de aproximadamente 100kb e você coloca no diretório raiz do projeto.Isso contrasta com make ou rake and friends, onde o sistema de compilação deve ser instalado primeiro.Você precisa ter o python >=2.3 instalado.

~$ ./waf configure && ./waf && ./waf install

O equivalente do Waf aos Makefiles é o arquivo wscript.É um script python que o waf lê e define pelo menos 3 funções: set_options(), configure(conf) e build(bld).Você pode adivinhar o que cada um deles faz.

Para começar, recomendo procurar os arquivos demos/cpp/* na distribuição fonte.Dê também uma olhada no documento/waf.pdf arquivo;é um documento de 12 páginas que o colocará em funcionamento rapidamente.

Para uma comparação da velocidade de várias ferramentas de construção C++, você pode dar uma olhada neste benchmark:http://retropaganda.info/~bohan/devel/wonderbuild/benchmarks/time.xml

Usamos Jam para um projeto C++ complexo - um benefício é que ele é bem multiplataforma.Em vez de eu divulgar os benefícios, basta dar uma olhada rápida neste link:http://www.perforce.com/jam/jam.html

Noel Llopis escreveu alguns artigos comparando sistemas de construção.A Parte 1 de "A Busca pelo Sistema de Construção Perfeito" está em http://gamesfromwithin.com/the-quest-for-the-perfect-build-system.A parte 2 segue no mesmo site.Uma nova tentativa de Scons é relatada em http://gamesfromwithin.com/?p=104.

Conclusões:SCons é muito lento ...Jam é o vencedor.

Cook é outra ferramenta que pode ser usada para substituir o make.Já vi várias grandes empresas usando-o.Portanto, está pronto para uso empresarial, embora o site pareça um tanto desatualizado.

http://miller.emu.id.au/pmiller/software/cook/

Estou usando SCons em um grande projeto c++ (no Linux e no Windows) e funciona muito bem.

scons all -j8 (que compila arquivos objeto em paralelo) é muito legal!

eu uso arquivo assado pelo meu processo de construção e me tornei um grande fã!

Eu nunca mais preciso escrever um Makefile, muito menos scripts horríveis de autotools GNU.Tudo o que tenho que fazer é fornecer um XML arquivo que descreve os destinos de construção.Bakefile pode converter isso em um Makefile que acerta todas as dependências (arquivo de cabeçalho), etc., onde diferentes formatos de Makefile podem ser escolhidos (colando a lista da documentação):

available formats are:
    autoconf      GNU autoconf Makefile.in files
    borland       Borland C/C++ makefiles
    dmars         Digital Mars makefiles
    dmars_smake   Digital Mars makefiles for SMAKE
    gnu           GNU toolchain makefiles (Unix)
    mingw         MinGW makefiles (mingw32-make)
    msevc4prj     MS eMbedded Visual C++ 4 project files
    msvc          MS Visual C++ nmake makefiles
    msvc6prj      MS Visual C++ 6.0 project files
    msvs2003prj   MS Visual Studio 2003 project files
    msvs2005prj   MS Visual Studio 2005 project files
    symbian       Symbian development files
    watcom        OpenWatcom makefiles
    xcode2        Xcode 2.4 project files

Eu costumo usar o autoconf opção, e ele escreve os irritantes scripts GNU autotools para mim.Eu tive que adaptar o configure.ac script, para que o configure encontre uma determinada biblioteca em qualquer sistema.Mas não foi tão ruim.Obter os scripts do autoconf dessa maneira é bom, porque não preciso escrevê-los sozinho e, quando eu distribuir meu projeto, parecerá que eu os escrevi, e os usuários ainda poderão construir meu projeto no deus- cedido, com

./configure && make && make install
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top