¿Alguna buena herramienta de construcción para un proyecto de C++ que pueda reemplazar a make?

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

  •  09-06-2019
  •  | 
  •  

Pregunta

Me pregunto si existe alguna herramienta agradable y ordenada para reemplazar GNU Autotools o Make para construir un proyecto C++ muy grande, que son tan complicados de usar.

Es sencillo generar todos los archivos que requiere Autotools si el proyecto es pequeño, pero si el código fuente está dividido en muchos directorios, con múltiples bibliotecas de terceros y muchas dependencias, caes en el "Infierno de Autotools".

gracias por cualquier recomendación

¿Fue útil?

Solución

El Motor JavaScript de Google V8 está escrito en C++ y utiliza Desventajas, así que supongo que es un voto a favor.

Otros consejos

Chacer?(genera archivos MAKE, por lo que técnicamente no es un reemplazo como tal).

Yo también he visto "Desventajas"Apareció en algunos lugares recientemente.Sin embargo, yo mismo no he creado nada con él.

Echa un vistazo a waf.

Creo que puedes considerarlo como un reemplazo completo de Make y Autotools.Está basado en Python.Una cosa que me gusta de waf es que el script waf en sí es ~100kb independiente y se coloca en el directorio raíz de su proyecto.Esto contrasta con make or rake and friends, donde el sistema de compilación debe instalarse primero.Sin embargo, debes tener instalado Python >=2.3.

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

El equivalente de Waf a Makefiles es el archivo wscript.Es un script de Python que lee waf y define al menos 3 funciones: set_options(), configure(conf) y build(bld).Puedes adivinar qué hace cada uno de ellos.

Para comenzar, recomiendo buscar en los archivos demos/cpp/* en la distribución fuente.También eche un vistazo al documento/waf.pdf archivo;es un documento de 12 páginas que lo pondrá rápidamente en funcionamiento.

Para comparar la velocidad de varias herramientas de compilación de C++, puede consultar este punto de referencia:http://retropaganda.info/~bohan/devel/wonderbuild/benchmarks/time.xml

Usamos Jam para un proyecto complejo de C++; una ventaja es que es muy multiplataforma.En lugar de hablar de los beneficios, simplemente eche un vistazo rápido a este enlace:http://www.perforce.com/jam/jam.html

Noel Llopis ha escrito algunos artículos comparando sistemas de construcción.La parte 1 de "La búsqueda del sistema de construcción perfecto" está en http://gamesfromwithin.com/the-quest-for-the-perfect-build-system.La parte 2 sigue en el mismo sitio.Se informa un reintento de Scons en http://juegosfromwithin.com/?p=104.

Conclusiones:SCons es demasiado lento...Jam es el ganador.

Cook es otra herramienta que se puede utilizar para reemplazar a make.He visto varias empresas grandes usándolo.Por lo tanto, está preparado para la empresa, aunque el sitio web parece bastante anticuado.

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

Estoy usando SCons en un gran proyecto de C++ (tanto en Linux como en Windows) y funciona muy bien.

scons all -j8 (que compila archivos objeto en paralelo) ¡es genial!

yo suelo archivo horneado para mi proceso de construcción y me convertí en un gran admirador!

Ya nunca más tendré que escribir un Makefile, y mucho menos los horribles scripts de GNU autotools.Todo lo que tengo que hacer es proporcionar un XML archivo que describe los objetivos de compilación.Bakefile puede convertir esto en un Makefile que obtenga todas las dependencias (archivo de encabezado) correctas, etc., donde se pueden elegir diferentes formatos de Makefile (pegando la lista de la documentación):

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

Yo suelo utilizar el configuración automática opción, y escribe los molestos scripts de GNU autotools por mí.Tuve que adaptar el configure.ac script, de modo que configure encuentre una determinada biblioteca en cualquier sistema.Pero no estuvo tan mal.Obtener los scripts de autoconf de esta manera es bueno, porque no tengo que escribirlos todos yo solo, y cuando distribuya mi proyecto parecerá como si los hubiera escrito yo, y los usuarios aún pueden construir mi proyecto en el mejor de los casos. dado paso, con

./configure && make && make install
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top