Makefile 条件句测试中的自动变量:GNU Make

Makefile 条件句测试中的自动变量:GNU Make,makefile,gnu-make,Makefile,Gnu Make,我被困在这里了。我们有两个makefile(这是我无法更改的要求) defs.mk:它包含源文件名及其额外的编译标志(标准标志除外),例如: 但这不起作用,因为条件中不支持自动变量的扩展。还有其他方法吗?我通常利用: 或用于定义我自己的函数: debug_defs=$(if $(findstring $(1),file1 file2),-DDEBUG,-DNDEBUG) %.o: src/$$(notdir %).c @cc -c $(CFLAGS) $(call debug_de

我被困在这里了。我们有两个makefile(这是我无法更改的要求)

  • defs.mk:它包含源文件名及其额外的编译标志(标准标志除外),例如:

但这不起作用,因为条件中不支持自动变量的扩展。还有其他方法吗?

我通常利用:

或用于定义我自己的函数:

debug_defs=$(if $(findstring $(1),file1 file2),-DDEBUG,-DNDEBUG)

%.o: src/$$(notdir %).c
    @cc -c $(CFLAGS) $(call debug_defs,$(notdir $(basename $@))
CUSTOM_DEBUG_FLAG = $($(basename $(notdir $@))_DEBUG) ## rule_main_DEBUG macro from defs.mk
ifeq ($(CUSTOM_DEBUG_FLAG),TRUE)
  do something
endif
SPECIFIC_FLAGS=$(if $(findstring $(CUSTOM_FLAG),TRUE),$(IF_TRUE),$(IF_FALSE))
debug_defs=$(if $(findstring $(1),file1 file2),-DDEBUG,-DNDEBUG)

%.o: src/$$(notdir %).c
    @cc -c $(CFLAGS) $(call debug_defs,$(notdir $(basename $@))