【问题标题】:Automatic variables in the tests of conditionals: GNU Make条件测试中的自动变量:GNU Make
【发布时间】:2009-05-04 11:20:02
【问题描述】:

我有点卡在这里。我们有两个 makefile(我无法更改的要求)

  • defs.mk:它包含源文件名及其额外的编译标志(除了标准标志)例如:
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

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

【问题讨论】:

    标签: makefile gnu-make


    【解决方案1】:

    我通常利用conditional functions:

    SPECIFIC_FLAGS=$(if $(findstring $(CUSTOM_FLAG),TRUE),$(IF_TRUE),$(IF_FALSE))
    

    或者使用call function定义我自己的函数:

    debug_defs=$(if $(findstring $(1),file1 file2),-DDEBUG,-DNDEBUG)
    
    %.o: src/$$(notdir %).c
        @cc -c $(CFLAGS) $(call debug_defs,$(notdir $(basename $@))
    

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多