funciones - hola mundo c++
¿Alguna buena herramienta de construcción para un proyecto de C++, que puede reemplazar a make? (9)
Cook es otra herramienta que se puede usar para reemplazar make. He visto a varias grandes compañías usándolo. Por lo tanto, está listo para la empresa a pesar de que el sitio web parece bastante anticuado.
Me pregunto si hay alguna herramienta buena y ordenada para reemplazar las herramientas automáticas GNU o Make para construir un gran proyecto de C ++, que es algo tan complicado de usar.
Es simple generar todos los archivos que de Autotools requieren si el proyecto es pequeño, pero si el código fuente se divide en muchos directorios, con múltiples bibliotecas de terceros y muchas dependencias, se cae en el "Infierno de Autotools".
gracias por cualquier recomendación
El Motor de JavaScript de Google V8 está escrito en C ++ y usa SCons , así que supongo que es un voto por ello.
Usamos Jam para un proyecto complejo de C ++. Una de las ventajas es que se trata de una plataforma cruzada. En lugar de que explique los beneficios, eche un vistazo rápido a este enlace: http://www.perforce.com/jam/jam.html
Eche un vistazo a waf .
Creo que puedes considerarlo como un reemplazo completo para make y autotools. Está basado en python. Una cosa que me gusta de waf es que el script waf en sí mismo es ~ 100kb independiente que colocas en el directorio raíz de tu proyecto. Esto está en contraste con make or rake y friends, donde el sistema de compilación debe instalarse primero. Sin embargo, debes tener python> = 2.3 instalado.
~$ ./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 lo que hace cada uno de ellos.
Para arrancar, recomiendo buscar en los archivos demos / cpp / * en la distribución fuente. También eche un vistazo al archivo doc / waf.pdf ; es un documento de 12 páginas que lo pondrá rápidamente en funcionamiento.
Utilizo SCons en un gran proyecto de C ++ (tanto en Linux como en Windows), y funciona muy bien.
scons all -j8
(que compila los archivos de objeto en paralelo) es muy genial!
¡Uso bakefile para mi proceso de compilación y me convertí en un gran fanático!
Nunca más tengo que escribir un Makefile, menos aún horribles scripts de autotools de GNU. Todo lo que tengo que hacer es proporcionar un archivo XML
que describa los objetivos de compilación. Bakefile puede convertir esto en un Makefile que obtiene todas las dependencias (archivo de cabecera), etc., donde se pueden elegir diferentes formatos de Makefile (pegando la lista desde 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
Usualmente uso la opción autoconf , y escribe los molestos scripts de autotools de GNU para mí. Tuve que adaptar el script configure.ac
, de modo que configure encuentre una cierta biblioteca en cualquier sistema. Pero no fue tan malo. Obtener los scripts de autoconf de esta manera es bueno, porque no tengo que escribirlos todos por mi cuenta, y cuando distribuyo mi proyecto parecerá que los escribí, y los usuarios aún pueden construir mi proyecto en el dios. dado manera, con
./configure && make && make install
Para una comparación de la velocidad de varias herramientas de compilación de C ++, puedes echar un vistazo a este punto de referencia: http://retropaganda.info/~bohan/work/sf/psycle/branches/bohan/wonderbuild/benchmarks/time.xml
Noel Llopis ha escrito algunos artículos que comparan los sistemas de compilació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. Un reintento de Scons se informa en http://gamesfromwithin.com/?p=104 .
Conclusiones: SCons es demasiado lento ... Jam es el ganador.