代码之家  ›  专栏  ›  技术社区  ›  sigjuice

如何调用使用define创建的GNU make宏?

  •  10
  • sigjuice  · 技术社区  · 17 年前

    在我的Makefile中调用GREP的两种方式有什么不同吗?有什么理由我应该用其中一个吗?两者似乎产生了相同的结果。

    define GREP
    $(word 3,$(shell echo "#define  FOO     0xfff00100"))
    endef
    
    all:
            @echo $(GREP)
            @echo $(call GREP)
    
    1 回复  |  直到 17 年前
        1
  •  16
  •   tripleee    5 年前

    你使用它的方式没有区别。但是,如果GREP宏是一个接受参数的函数,则必须使用$(call)将参数传递给它。例如:

    define GREP
    $(shell grep $1 $2)
    endef
    
    FOO:=$(call GREP,abc,words.txt)
    

    这导致 $1 替换为“abc”,以及 $2 使用“words.txt”。

    有关用户定义函数的更多信息,请参见GNU make手册: http://www.gnu.org/software/make/manual/make.html#Call-Function