J'expérimente avec un système de construction mis à jour au travail; Actuellement, j'essaie de trouver un bon moyen de définir les drapeaux du compilateur & en fonction de la plate-forme cible.Bon moyen de faire un "switch" dans un Makefile
Ce que je voudrais faire est quelque chose comme
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
...
qui ne sont pas pris en charge par GNU Make. Maintenant, ma première pensée était de le faire
-include $(PLATFORM)_$(BUILD_TYPE)
qui est une solution assez décente, cependant, il est difficile d'obtenir un aperçu de ce qui diffère entre les fichiers, sans oublier que je suis impatient de l'écriture & en conservant un bon 60-80 fichiers, chacun contenant un ensemble de définitions de variables.
Est-ce que quelqu'un connaît une meilleure façon d'accomplir cela? C'est à dire. définir un ensemble de drapeaux et d'autres options basées sur une autre variable?
Mon cas d'utilisation est en fait que j'ai un système basé sur makefile qui construit un grand ensemble de composants, dont certains ont des scripts de configuration qui doivent être conduits correctement. Le système de construction conserve les éléments séparés par cible de sortie avec une chaîne semblable à $ (arch) qui ne peut pas être transmise à config.sub, j'ai donc besoin d'une instruction case qui convertit notre $ (arch) en valeur de --host à être passé au script configure. Nous obtenons en fait le $ (arch) de quelque chose comme '-include $ (PLATFORM) _ $ (BUILD_TYPE)' en haut du système de construction. –