title: Waf
text: # Waf
  
  Waf es una herramienta que ayuda a configurar automáticamente la compilación y la instalación de otros programas o bibliotecas (build).
  
  ## Funciones
  
  General
  
  * Es portable a sistemas Unix y no-Unix.
  * Es ligero.
  * Ofrece un lenguaje de programación real (similar a SCons).
  * Soporta objetivos estándar: configurar, compilar, limpiar, instalar y desinstalar.
  
  Requerimientos
  
  * No requiere instalación: el script WAF (menos de 100KB) puede ser distribuido y utilizado directamente.
  * Sólo necesita a Python como dependencia externa.
  * No requiere sh (a diferencia de GNU Autotools).
  * No requiere de conocimientos acerca de M4 (a diferencia de GNU Autotools).
  
  Soporte de lenguajes:
  
  * Preprocesador de dependencias C/C++.
  * Soporte para programas híbridos en OCaml, en programas de GNOME.
  * Soporte para el lenguaje de programación D (tanto GDC y dmd son compatibles).
  * Proyectos escritos en vala son soportados ( como Val(a)IDE ).
  * Información en pantalla colorida y barra de progreso.
  * Los scripts son módulos de Python.
  * Esquema modular de configuración con análisis personalizable en línea de comandos.
  * Modo demonio para el historial de recompilación.
  * Busca archivos fuente de forma inteligente para facilitar el mantenimiento del script .
  * Soporta caché de objetos global para evitar compilaciones innecesarias.
  * Soporta la ejecución de pruebas(test) en los programas al final de la compilación.
  
  ## Historia
  
  Era alrededor del año 2005, el proyecto KDE usó durante mucho tiempo el Autotools como su principal sistema de construcción. Autotools tiene una arquitectura que es difícil de comprender, y ha sido apodado "auto-infierno"., en KDE estaban considerando la posibilidad de pasar de Autotools a SCons.
  
  Thomas Nagy había creado una herramienta de construcción automatizada llamada BKsys que fue diseñada para colocarse encima de SCons, proporcionando mayor nivel de funcionalidad similar a la de autotools. Cuando Thomas Nagy decide que los problemas fundamentales de SCons (sobre todo la mala escalabilidad) eran demasiado complejos y requerían mucho tiempo para arreglarse, comienza una reescritura completa llamada "Waf".
  
  Waf fue objeto de un poco de atención cuando el proyecto en KDE decidieron utilizar BKsys (y más tarde WAF) como su principal sistema de construcción, aunque más tarde, esa decisión fue revocada en favor de CMake porque BKsys no pudo resolver los problemas de SCons, y Waf todavía estaba en una fase muy temprana de desarrollo (pre-alfa) en ese momento.
  
  ## Ejemplo Waf archivo
  
  A continuación se muestra una wscript muy simple, que incluirá una fuente llamada "hola-mundo.c" usando el compilador C por defecto.
  
  El proyecto se construye con el siguiente comando:
  
  