Detección de patrones en argumentos de entrada de ficheros Makefile
Hola,
Estoy intentando reconocer patrones en los argumentos de entrada de ficheros Makefile. Es decir, si, por ejemplo, paso el argumento CC (que almacenará el nombre del compilador) como gcc o gcc-4.5, quiero que sea reconocido siempre como gcc. Para ello había pensado utilizar las órdenes condicionales ifeq(), pero parece que no reconocen patrones (o yo no sé hacerlo). Veamos un ejemplo de fichero Makefile:
ifeq ($(CC),gcc*)
override CC=gcc
endif
prueba:
@echo "Valor para CC pasado: $(CC)"
Así no funciona. He probado varias posibilidades para el segundo argumento de ifeq(), como gcc[-], pero tampoco he conseguido nada. Parece que ifeq() chequea coincidencia exacta de sus argumentos.
Otra posibilidad sería realizar la comparación en bash con la orden $(shell) de make, pero parece que una variable definida dentro del Makefile (CC en nuestro caso) no puede ser exportada a la shell, que es donde trabaja $(shell)
¿Alguna sugerencia?
Gracias
- Inicie sesión o regístrese para enviar comentarios
- 404 lecturas


Vaya, pese a haber utilizado el entorno code, no se ven las tabulaciones en el trozo de código que pegué en el alterior comentario.
Vaya, pese a haber utilizado el entorno code, no se ven las tabulaciones en el trozo de código que pegué en el alterior comentario.
Vuelve a pegarlas pero usa PRE en vez de CODE. A veces sucede eso cuando el texto es muuuuuy largo.
Saludos,
Sidd.
EDITO: me disculpo, acabo de volver a leer y observo que dijiste tabulaciones, por lo que mi respuesta no tiene nada que ver con lo dicho por ti.
Una posible solución utilizando la función findstring,
ifneq (, $(findstring gcc, $(CC)))override CC=gcc
endif
prueba:
@echo "Valor para CC pasado: $(CC)"
Para realizar globbing de forma similar a la shell puedes utilizar la función wildcard.
Para más información,
info makePerfecto con $(findstring), gracias