Estoy experimentando con un sistema de compilación actualizado en el trabajo; Actualmente, estoy tratando de encontrar una buena forma de establecer indicadores de compilador & según la plataforma de destino.Una buena manera de hacer un "cambio" en un Makefile
Lo que me gustaría hacer es algo así como
switch $(PLATFORM)_$(BUILD_TYPE)
case "Linux_x86_release"
CFLAGS = -O3
case "Linux_x86_debug"
CFLAGS = -O0 -g
case "ARM_release"
CC = armcc
AR = armlink
CFLAGS = -O2 -fx
...
que no está soportado por GNU Make. Ahora, lo primero que pensé fue simplemente hacer
-include $(PLATFORM)_$(BUILD_TYPE)
que es una solución bastante decente, sin embargo, hace que sea difícil obtener una visión general de lo que difiere entre los archivos, por no hablar de que estoy deseando que llegue la escritura & manteniendo unos buenos 60-80 archivos, cada uno con un conjunto de definiciones de variables.
¿Alguien sabe una mejor manera de lograr esto? Es decir. establecer un conjunto de banderas y otras opciones basadas en otra variable?
Mi caso de uso es en realidad que tengo un sistema basado en archivos que crea un gran conjunto de componentes, algunos de los cuales tienen scripts configurados que deben manejarse correctamente. El sistema de compilación mantiene las cosas separadas por destino de salida con una cadena de $ (arco) similar que no se puede pasar a config.sub, así que necesito una declaración de caso que convierta nuestro $ (arch) al valor de --host a pasar al script de configuración. De hecho, obtenemos $ (arch) de algo como '-include $ (PLATFORM) _ $ (BUILD_TYPE)' en la parte superior del sistema de compilación. –