Un 'Targeted Build' es una estrategia de compilación que identifica y reconstruye únicamente los artefactos de software que son estrictamente necesarios debido a cambios en el código fuente o sus dependencias. A diferencia de un 'full build' que recompila todo el proyecto, un 'targeted build' utiliza mecanismos de seguimiento de dependencias (como 'timestamps' de archivos, 'hashes' de contenido o grafos de dependencias) para determinar el subconjunto mínimo de componentes que deben ser procesados. Esto se logra analizando el árbol de dependencias del proyecto y marcando como 'dirty' solo los nodos afectados, propagando esa marca a sus consumidores directos.

Esta técnica es fundamental en sistemas de gestión de código fuente y herramientas de automatización de compilación. Ejemplos concretos incluyen 'Make' y 'Ninja', que utilizan 'Makefiles' o archivos de configuración similares para definir reglas y dependencias, permitiendo reconstrucciones incrementales. Sistemas de compilación distribuidos como 'Bazel' (utilizado por Google) y 'Buck' (utilizado por Meta) llevan esto al extremo, no solo identificando dependencias a nivel de archivo, sino también a nivel de función o clase, y distribuyendo la compilación de esos subconjuntos a través de una red de 'workers'. Incluso IDEs modernos como IntelliJ IDEA o Visual Studio implementan 'targeted builds' para acelerar la experiencia de desarrollo local.

Para un arquitecto de sistemas, comprender y diseñar para 'Targeted Builds' es crucial para la eficiencia del ciclo de desarrollo y la gestión de recursos. Permite reducir drásticamente los tiempos de integración continua (CI) y despliegue continuo (CD), lo que impacta directamente en la velocidad de entrega de valor. La elección de herramientas de compilación y la estructuración del proyecto (modularidad, granularidad de los módulos) deben facilitar esta capacidad. Los 'trade-offs' incluyen la complejidad inicial de configurar grafos de dependencias precisos y el mantenimiento de estas configuraciones, así como la sobrecarga de los sistemas de seguimiento de cambios. Sin embargo, los beneficios en escalabilidad, velocidad y uso de recursos en proyectos grandes y complejos suelen justificar esta inversión inicial.