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 funcionamiento es similar al del popular sistema de compilación GNU .
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 compilación ScCons , un diseño que ganó el concurso 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 KDE . Durante un tiempo, hubo planes para usarlo como herramienta de compilación para KDE 4 y versiones posteriores, pero ese esfuerzo se abandonó en favor de CMake . [ 5 ]
Entre los proyectos notables que usan SCons (o lo usaron en algún momento) se incluyen: The Battle for Wesnoth , [ 6 ] Battlefield 1942 , Doom 3 , [ 7 ] gem5, [ 8 ] gpsd , [ 9 ] GtkRadiant , [ 10 ] Madagascar , [ 11 ] Nullsoft Scriptable Install System , [ 12 ] OpenNebula , [ 13 ] VMware , Wolfenstein: Enemy Territory , [ 14 ] XORP y MCA2, [ 15 ] openpilot [ 16 ] y Godot . [ 17 ]
.csig es el formato de archivo de firma de contenido de SCons.
Características
Las características principales incluyen:
- Los archivos de configuración están escritos en Python; las compilaciones escritas por el usuario pueden aprovechar un lenguaje de programación multiplataforma de propósito general.
- Análisis de dependencias para C , C++ y Fortran
- El análisis de dependencias es extensible mediante escáneres definidos por el usuario para otros lenguajes 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 para documentos TeX y LaTeX.
- Soporte para otros idiomas mediante constructores personalizados.
- Compilación a partir de repositorios centrales de código fuente y objetivos precompilados.
- Capacidad para utilizar Visual Studio , incluyendo la generación de archivos .dsp , .dsw , .sln y .vcproj.
- Detección de cambios en el contenido de los archivos mediante firmas MD5 ; posibilidad opcional y configurable de usar marcas de tiempo tradicionales.
- Capacidad para realizar compilaciones en paralelo, manteniendo un número específico de trabajos ejecutándose simultáneamente independientemente de la jerarquía de directorios.
- Soporte similar a Autoconf para encontrar archivos #include, bibliotecas, funciones y definiciones de tipos.
- Vista global de las dependencias, por lo que no se requieren múltiples pasadas de compilación ni la reordenación de los objetivos.
- Posibilidad de compartir archivos compilados en una caché para acelerar múltiples compilaciones, similar a ccache pero para cualquier tipo de archivo de destino, no solo compilación C/C++.
- Diseñado desde cero para compilaciones multiplataforma; se sabe que funciona en sistemas POSIX (incluidos Linux , AIX y OS/2 , *BSD Unice , HP-UX , SGI IRIX , Solaris , illumos ), Windows NT , OS X
Ejemplos
El siguiente es un archivo SConstruct que compila un programa "hola mundo " en C utilizando el compilador de plataforma predeterminado:
Programa ( "hello-world.c" )A continuación se muestra un archivo SConstruct para un proyecto que incluye dos archivos fuente y especifica las opciones de la herramienta de compilación:
env = Environment ( ) env.Append ( CPPFLAGS = [ " - Wall" , " -g" ]) env.Program ( "hello" , [ "hello.c" , "main.c" ])Véase también
- Construcción
- qmake – Marco de trabajo orientado a objetos para el desarrollo de software. Páginas que muestran breves descripciones de los destinos de redirección.
- Qbs (herramienta de compilación)
- Premake : herramienta de compilación multiplataforma para configurar compilaciones específicas de cada plataforma.
- Lista de software de automatización de compilación
Referencias
- ↑ Knight, Steven (febrero de 2002). "Diseño e implementación de SCons" . Archivado del original el 21 de marzo de 2018. Recuperado el 23 de marzo de 2024 .
- ↑ "Archivos - SCons" .
- ↑ Contras (sitio web), DSMit
{{citation}}: CS1 maint: servicio de archivado obsoleto ( enlace ) . - ↑ Samuel, Alex (2000-08-04). "Resultados de la segunda ronda del concurso de diseño de Software Carpentry: categorías de configuración, construcción y seguimiento" . Recuperado 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 .
- ↑ "CompilingWesnoth" . Wiki . Wesnoth . Consultado el 11 de abril de 2011 .
- ↑ "README.txt" . id Software . Consultado el 13 de mayo de 2015 .
- ↑ Gem5.
- ↑ "SCons está lleno de victorias hoy" . ESR . iBiblio. 5 de abril de 2011. Consultado el 11 de abril de 2011 .
- ↑ "Documentación para desarrolladores de GtkRadiant 1.6.0 (Zeroradiant)" (Trac) . QE radiant. 30 de junio de 2008. Consultado el 28 de diciembre de 2009 .
- ↑ "Instalación" . Wiki . Ahay. 26 de febrero de 2011. Consultado el 11 de abril de 2011 .
- ↑ "INSTALAR" . NSIS (código fuente). Source forge. 28-05-2011 . Recuperado el 11-04-2011 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "/SConstruct - OpenNebula - Páginas de desarrollo de OpenNebula" . Proyecto OpenNebula. Archivado del original el 9 de agosto de 2018. Consultado el 9 de enero de 2016 .
- ↑ "README.txt" . id Software . Consultado el 25/04/2017 .
- ↑ "Arquitectura de controlador modular" . Centro de Investigación de Tecnologías de la Información (FZI), Instituto Tecnológico de Karlsruhe (KIT). Archivado del original el 10 de diciembre de 2020. Consultado el 30 de abril de 2013 .
- ↑ "repositorio de OpenPilot en GitHub" . comma.ai/ . Consultado el 10 de mayo de 2021 .
- ↑ "Introducción al sistema de compilación: la documentación más reciente de Godot Engine" . docs.godotengine.org . Consultado el 19 de agosto de 2019 .
Enlaces externos
- Sitio web oficial
- Automatización de compilaciones
- Herramientas de compilación
- Software libre programado en Python
- Software que utiliza la licencia MIT.