Automatische Variablen in den Tests von conditionals: GNU Make
Frage
Ich bin ein bisschen hier fest. Wir haben zwei Makefiles (A Anforderung, die ich nicht ändern kann)
- defs.mk: Sie enthält die Quelldatei Namen und ihre zusätzliche Kompilierung Flags (abgesehen von den Standard-Flags) z.
C_FILES = c/src/main/rule_main.c rule_main_OPTIONAL_FLAG = +w127 rule_main_DEBUG = TRUE
-
Makefile
:. Es enthält alle Regeln
Jetzt möchte ich eine Anlage hinzufügen, so dass ich Datei spezifische Flags definieren können (und optionale Datei spezifische Debug-Flag) wie in:
CUSTOM_DEBUG_FLAG = $($(basename $(notdir $@))_DEBUG) ## rule_main_DEBUG macro from defs.mk
ifeq ($(CUSTOM_DEBUG_FLAG),TRUE)
do something
endif
Aber das funktioniert nicht, da Erweiterung der automatischen Variablen nicht innerhalb conditionals unterstützt. Gibt es eine andere Möglichkeit, es zu tun?
Lösung
Ich nehme in der Regel von Vorteil bedingten Funktionen :
SPECIFIC_FLAGS=$(if $(findstring $(CUSTOM_FLAG),TRUE),$(IF_TRUE),$(IF_FALSE))
oder benutzen rel="noreferrer"> mein Eigen nennen definieren Funktion:
debug_defs=$(if $(findstring $(1),file1 file2),-DDEBUG,-DNDEBUG)
%.o: src/$$(notdir %).c
@cc -c $(CFLAGS) $(call debug_defs,$(notdir $(basename $@))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow