Variabili automatiche nei test dei condizionali: GNU Make
Domanda
Sono un po 'bloccato qui. Abbiamo due makefile (un requisito che non posso cambiare)
- defs.mk: contiene i nomi dei file di origine e amp; i loro flag di compilazione extra (a parte i flag standard) ad es .:
C_FILES = c/src/main/rule_main.c rule_main_OPTIONAL_FLAG = +w127 rule_main_DEBUG = TRUE
-
Makefile
: contiene tutte le regole.
Ora voglio aggiungere una funzione in modo da poter definire flag specifici per file (e flag di debug specifici per file opzionale) come in:
CUSTOM_DEBUG_FLAG = $($(basename $(notdir $@))_DEBUG) ## rule_main_DEBUG macro from defs.mk
ifeq ($(CUSTOM_DEBUG_FLAG),TRUE)
do something
endif
Ma questo non funziona poiché l'espansione delle variabili automatiche non è supportata nei condizionali. C'è un altro modo per farlo?
Soluzione
Di solito utilizzo le funzioni condizionali :
SPECIFIC_FLAGS=$(if $(findstring $(CUSTOM_FLAG),TRUE),$(IF_TRUE),$(IF_FALSE))
Oppure usa funzione di chiamata per definire la mia funzione:
debug_defs=$(if $(findstring $(1),file1 file2),-DDEBUG,-DNDEBUG)
%.o: src/$(notdir %).c
@cc -c $(CFLAGS) $(call debug_defs,$(notdir $(basename $@))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow