La detección de funciones mediante la compilación de pruebas, como la implementan autoconf y CMake, presenta limitaciones significativas: es ineficiente, frágil, lenta y carece de seguimiento de cambios. Este artículo técnico explica cómo superar estas deficiencias integrando la detección directamente en el sistema de construcción del proyecto.
El problema principal radica en que la compilación de pruebas es redundante en plataformas donde las funciones ya existen, sensible a errores de configuración y no actualiza la configuración cuando las dependencias cambian. La solución propuesta utiliza la capacidad de los sistemas de construcción modernos para ejecutar las pruebas en paralelo y rastrear dependencias. En lugar de generar un proyecto separado para cada prueba, el sistema de construcción compila y vincula las pruebas directamente durante la actualización del proyecto, utilizando los resultados para decidir qué código de respaldo incluir.
Un desafío técnico clave es que los resultados de las pruebas deben estar disponibles cuando se evalúan las reglas de construcción, ya que no se pueden ejecutar antes de que el archivo de Make se haya cargado. El texto describe cómo herramientas como build2 resuelven esto mediante la capacidad de pausar la carga del archivo, actualizar los objetivos relevantes y reanudar el proceso sin reiniciar, eliminando así las penalizaciones de rendimiento asociadas a la actualización de archivos de Make.
