SCons es una herramienta de desarrollo de software que analiza las dependencias del código fuente y los requisitos de adaptación del sistema operativo a partir de la descripción de un proyecto de software y genera ejecutables binarios finales para su instalación en la plataforma del sistema operativo de destino. Su función es similar a la del sistema de compilación GNU más popular .
La herramienta genera scripts de Python para la configuración del proyecto y la lógica de compilación.
Historia
La utilidad de construcción de software Cons , escrita en Perl , fue creada por Bob Sidebotham en 1999. [3] Sirvió como base para la herramienta de construcción ScCons , un diseño que ganó la competencia SC Build del proyecto Software Carpentry en agosto de 2000. [4] ScCons fue la base de SCons.
SCons inspiró la creación de Waf , anteriormente conocido como SCons/BKsys , que surgió en la comunidad de KDE . Durante algún tiempo, hubo planes para usarlo como herramienta de compilación para KDE 4 y posteriores, pero ese esfuerzo se abandonó en favor de CMake . [5]
Entre los proyectos notables que utilizan SCons (o lo utilizaron en algún momento) se incluyen: The Battle for Wesnoth , [6] Battlefield 1942 , [ cita requerida ] Doom 3 , [7] FCEUX , [8] gem5, [9] gpsd , [10] GtkRadiant , [11] Madagascar , [12] Mixxx , [13] MongoDB , [14] Nullsoft Scriptable Install System , [15] OpenNebula , [16] VMware , [ cita requerida ] , Wolfenstein: Enemy Territory , [17] XORP y MCA2, [18] openpilot [19] y Godot . [20]
.csig es el formato de archivo de firma de contenido de SCons.
Características
Las características principales incluyen:
- Los archivos de configuración son Python; las compilaciones escritas por el usuario pueden aprovechar un lenguaje de programación multiplataforma de propósito general.
- Análisis de dependencia para C , C++ y Fortran
- El análisis de dependencias se puede ampliar a través de escáneres definidos por el usuario para otros idiomas o tipos de archivos; a diferencia del análisis de dependencias de GNU Compiler Collection (GCC), SCons utiliza un escaneo de expresiones regulares para los archivos fuente incluidos.
- Soporte integrado para C, C++, D , Java , Fortran , Objective-C , Yacc , Lex , Qt y SWIG , así como documentos TeX y LaTeX
- Compatibilidad con otros idiomas mediante constructores personalizados
- Creación a partir de repositorios centrales de código fuente y objetivos prediseñados
- Capacidad para utilizar Visual Studio , incluida la generación de archivos .dsp, .dsw, .sln y .vcproj
- Detección de cambios en el contenido de archivos mediante firmas MD5 ; capacidad opcional y configurable para utilizar marcas de tiempo tradicionales
- Capacidad de realizar compilaciones paralelas, manteniendo una cantidad específica de trabajos ejecutándose simultáneamente independientemente de la jerarquía del directorio
- Soporte similar a Autoconf para buscar archivos #include, bibliotecas, funciones y definiciones de tipos
- Vista global de las dependencias, por lo que no se requieren múltiples pases de compilación ni reordenamiento de objetivos.
- Capacidad de compartir archivos compilados en un caché para acelerar múltiples compilaciones, como ccache pero para cualquier tipo de archivo de destino, no solo la compilación de C/C++
- Diseñado desde cero para compilaciones multiplataforma; se sabe que funciona en sistemas POSIX (incluidos Linux , AIX y OS/2 , *BSD Unices , HP-UX , SGI IRIX , Solaris , illumos ), Windows NT , OS X.
Ejemplos
El siguiente es un archivo SConstruct que crea un programa C de hola mundo utilizando el compilador de plataforma predeterminado:
Programa ( "hola-mundo.c" )
El siguiente es un archivo SConstruct para un proyecto que incluye dos archivos fuente y especifica opciones de la herramienta de compilación:
env = Environment ()
env.Append ( CPPFLAGS = [ " -Wall" , " -g" ]) env.Program ( " hola" , [ "hola.c" , " main.c" ])
Véase también
- Buildout : herramienta de programación destinada a ayudar con la implementación de softwarePáginas que muestran descripciones de wikidata como alternativa
- qmake – herramienta de creación de software que genera MakefilesPáginas que muestran descripciones de wikidata como alternativa
- Qbs (build tool) : software libre y de código abierto multiplataforma para gestionar el proceso de compilación de softwarePáginas que muestran descripciones de wikidata como alternativa
- Premake : herramienta de compilación multiplataforma para configurar compilaciones específicas de la plataforma
- Lista de software de automatización de compilaciones
Referencias
- ^ Knight, Steven (febrero de 2002). «Diseño e implementación de SCons». Archivado desde el original el 21 de marzo de 2018. Consultado el 23 de marzo de 2024 .
- ^ "Archivos - SCons".
- ^ Cons (sitio web), DSMit, archivado desde el original el 15 de agosto de 2000.
- ^ Samuel, Alex (4 de agosto de 2000). "Resultados de la segunda ronda del concurso de diseño de Software Carpentry, categorías Configuración, Construcción y Seguimiento" . Consultado el 29 de octubre de 2012 .
- ^ Neundorf, Alexander (21 de junio de 2006). "Por qué el proyecto KDE cambió a CMake y cómo (continuación)". LWN . Consultado el 21 de julio de 2009 .
- ^ "Compilando Wesnoth". Wiki . Wesnoth . Consultado el 11 de abril de 2011 .
- ^ "README.txt". id Software . Consultado el 13 de mayo de 2015 .
- ^ "Descargas". FCEUX . Consultado el 25 de abril de 2017 .
- ^ Gema5.
- ^ "SCons está lleno de victorias hoy". ESR . iBiblio. 2011-04-05 . Consultado el 2011-04-11 .
- ^ "Documentación para desarrolladores de GtkRadiant 1.6.0 (Zeroradiant)" (Trac) . QE radiant. 2008-06-30 . Consultado el 2009-12-28 .
- ^ "Instalación". Wiki . Ahay. 2011-02-26 . Consultado el 2011-04-11 .
- ^ "Mixxx/Compilación". GitHub . 26 de agosto de 2014.
- ^ "Building for Linux". MongoDB . 10gen. 30 de enero de 2009. Archivado desde el original el 21 de febrero de 2009 . Consultado el 8 de febrero de 2011 .
- ^ "INSTALACIÓN". NSIS (código fuente). Source forge. 2011-05-28. Archivado desde el original el 2012-07-11 . Consultado el 2011-04-11 .
- ^ "/SConstruct - OpenNebula - Páginas de desarrollo de OpenNebula". Proyecto OpenNebula . Consultado el 9 de enero de 2016 .
- ^ "README.txt". id Software . Consultado el 25 de abril de 2017 .
- ^ "Arquitectura de controlador modular". Centro de investigación de tecnología de la información (FZI), Instituto Tecnológico de Karlsruhe (KIT).
- ^ "Repositorio de Github de OpenPilot". comma.ai/ . Consultado el 10 de mayo de 2021 .
- ^ "Introducción al sistema de compilación: documentación más reciente de Godot Engine". docs.godotengine.org . Consultado el 19 de agosto de 2019 .
Enlaces externos
- Sitio web oficial