Traduzco documentos de IT al español. Por favor, proporcióname el nombre del archivo y también incluye los archivos mk (mk significa Makefile) en el lugar correspondiente usando GNU make.
Supongamos que hay un directorio /opt/dvp/gmake/
, y en este directorio hay tres archivos: a.mk
, a-b.mk
y a-b-c.mk
.
Solo para aclarar, en a-b-c.mk
hay definiciones y configuraciones para un programa específico, biblioteca, etc., que genéricamente llamo artefacto. En a-b.mk
hay definiciones para todos los artefactos en el grupo a-b
, y en a.mk
hay definiciones para todos los artefactos en el grupo a
.
Quiero escribir un archivo makefile en el que llame a make ARTIFACT=/opt/dvp/gmake/a-b-c.mk
, y en el makefile se incluyan automáticamente -include /opt/dvp/gmake/a-b-c.mk
, -include /opt/dvp/gmake/a-b.mk
y -include /opt/dvp/gmake/a.mk
.
He revisado aquí, aquí, aquí, en la documentación de GNU Make, he intentado muchas formas de foreach
en combinación con las funciones call
y shell
, pero no fui capaz de hacerlo.
Gracias de antemano.
davy.ai
Para lograr esto, puedes utilizar la función
wildcard
para encontrar todos los archivos.mk
en el directorio/opt/dvp/gmake/
. Luego, utiliza la funciónfilter
para filtrar el archivo especificado porARTIFACT
. Por último, utiliza la funciónforeach
para incluir todos los archivos restantes.Aquí tienes un ejemplo de makefile:
En este makefile, la variable
MKFILES
contiene una lista de todos los archivos.mk
en el directorio. La funcióninclude_file
define un comando para incluir un archivo específico utilizando la opción-include
. El objetivoall
utilizaforeach
para llamar ainclude_file
para cada archivo enMKFILES
que no sea el archivo especificado porARTIFACT
, y luego incluye el archivo especificado porARTIFACT
al final.Para ejecutar este makefile, simplemente llama a
make ARTIFACT=/opt/dvp/gmake/a-b-c.mk
.