Articulo de referencia

SCons

{{cite web |url=http://legacy.python.org/workshops/2002-02/papers/16/index.htm|first=Steven|last=Knight|date=February 2002|title = SCons Design and Implementation|access-date=Ma...

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

Referencias

  1. 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 .
  2. "Archivos - SCons" .
  3. Contras (sitio web), DSMit{{citation}}: CS1 maint: servicio de archivado obsoleto ( enlace ) .
  4. 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 .
  5. 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 .
  6. "CompilingWesnoth" . Wiki . Wesnoth . Consultado el 11 de abril de 2011 .
  7. "README.txt" . id Software . Consultado el 13 de mayo de 2015 .
  8. Gem5.
  9. "SCons está lleno de victorias hoy" . ESR . iBiblio. 5 de abril de 2011. Consultado el 11 de abril de 2011 .
  10. "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 .
  11. "Instalación" . Wiki . Ahay. 26 de febrero de 2011. Consultado el 11 de abril de 2011 .
  12. "INSTALAR" . NSIS (código fuente). Source forge. 28-05-2011 . Recuperado el 11-04-2011 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  13. "/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 .
  14. "README.txt" . id Software . Consultado el 25/04/2017 .
  15. "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 .
  16. "repositorio de OpenPilot en GitHub" . comma.ai/ . Consultado el 10 de mayo de 2021 .
  17. "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 .
  • Sitio web oficial

Obtenido de " https://en.wikipedia.org/w/index.php?title=SCons&oldid=1336385633 "