我有点困在这里。我们有两个生成文件(一种要求,我不能更改)

  • 定义.马克:它包含源文件中的姓名和他们的额外的标志汇编(除了标准的标志),例如:
C_FILES = c/src/main/rule_main.c
rule_main_OPTIONAL_FLAG = +w127
rule_main_DEBUG = TRUE
  • Makefile:它包含所有的规则。

现在我想添加一个设施,这样我可以界定文件的具体标志(和可选文件的具体调试标志) 为:

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 $@))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top