instalar - makefile linux c
¿Qué hace un símbolo de porcentaje en un archivo MAKE? (1)
Como puede leer en el manual de creación de GNU , el porcentaje actúa como un comodín. El primer argumento de la function patsubst
forma el patrón. Cada elemento / palabra en el último argumento se compara con este patrón, y si coincide, se reemplaza con el segundo argumento. Si hay un símbolo de comodín (%) en el patrón, esto coincidirá con cualquier número de caracteres, y estos caracteres se copian en la cadena de reemplazo en el lugar del% en el segundo argumento.
En su ejemplo, el patrón es solo el símbolo comodín, por lo que coincidirá con cualquier palabra en el último argumento de la función, y esta palabra se copiará en la cadena de reemplazo (el segundo argumento) en el lugar del%.
Un ejemplo puede aclarar las cosas. Supongamos que TEST_SUBDIRS
contiene dos nombres.
TEST_SUBDIRS := test1 test2
include $(patsubst %,$(src)/%/Make.tests, $(TEST_SUBDIRS))
Esto es equivalente a lo siguiente.
include $(src)/test1/Make.tests $(src)/test2/Make.tests
Un archivo MAKE se procesa secuencialmente, línea por línea. Las asignaciones de variables se "internalizan", y las instrucciones de inclusión hacen que los contenidos de otros archivos se inserten literalmente en esa ubicación después de la cual ese contenido se procesa como parte del archivo MAKE.
Un gráfico de dependencia se forma a partir de las reglas a medida que se leen, y después de que se procesa todo el archivo, se ejecutan las recetas necesarias para actualizar el objetivo solicitado.
Tengo un archivo MAKE que se ve así:
include $(patsubst %,$(src)/%/Make.tests, $(TEST_SUBDIRS))
%-test:
Something here
Entiendo para qué está destinado en la línea de regla objetivo. ¿Qué está haciendo el signo %
en la primera línea? ¿Tiene algo que ver el signo de porcentaje en la línea de regla objetivo?
Cuando escribo make sometarget
, ¿las líneas del archivo MAKE que no están escritas como parte de ninguna regla (como la primera línea de este archivo MAKE) se ejecutan? Si es así, ¿cuál es el orden de ejecución?