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?

È stato utile?

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
scroll top