Ich experimentiere mit einem aktualisierten Build-System bei der Arbeit; zur Zeit versuche ich eine gute Möglichkeit zu finden, Compiler & Flags abhängig von der Zielplattform zu setzen.Gute Möglichkeit, einen "Schalter" in einem Makefile zu tun
Was ich möchte, ist, etwas zu tun wie
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
...
, die von GNU ist nicht Stellen unterstützt. Nun, mein erster Gedanke nur zu tun, war zu
-include $(PLATFORM)_$(BUILD_TYPE)
, der eine ziemlich anständigen Lösung ist jedoch, es macht es schwer, einen Überblick zu bekommen, was zwischen Dateien unterscheidet, nicht zu erwähnen, dass ich freue mich auf Schreiben & Beibehaltung einer guten 60-80 Dateien, die jeweils eine Reihe von Variablen-Definitionen enthalten.
Kennt jemand einen besseren Weg, dies zu erreichen? I.e. Setzen einer Reihe von Flags und anderen Optionen basierend auf einer anderen Variablen?
Mein Anwendungsfall ist eigentlich, dass ich ein Makefile-basiertes System habe, das eine große Menge von Komponenten erstellt, von denen einige über Skripts verfügen, die korrekt gesteuert werden müssen. Das Build-System hält die Dinge pro Ausgabeziel mit einer $ (arch) -ähnlichen Zeichenfolge getrennt, die nicht an config übergeben werden kann. Daher benötige ich eine case-Anweisung, die unseren $ (arch) in den Wert von --host in umwandelt an das configure-Skript übergeben werden. Wir erhalten den $ (arch) von etwas wie '-include $ (PLATFORM) _ $ (BUILD_TYPE)' am Anfang des Build-Systems. –