【问题标题】:How to pass argument to target in makefile?如何将参数传递给makefile中的目标?
【发布时间】:2021-02-26 13:35:46
【问题描述】:

我想通过传递要删除的二进制文件来清理我的目录。在我的目录中有这些文件:

foo.c foo.o foo

我想删除 foo.ofoo。现在在我的 makefile 中,我有这个:

clean:
   rm *.o
   rm [...] #the [...] should be the argument

所以我想运行make clean foo,这里的foo 将是传递给clean 目标的参数。我在某处读过,正确的方法应该是简单地使 vairable $(BINARIES) inside 生成文件,并在 rm 命令中使用该变量,但是每次我都必须编辑该变量想编译另一个二进制文件。因此,我想将该二进制文件作为参数传递给clean 目标。怎么做? (而且,我确实想发出像make ARGS=foo clean这样的make,这太长了,我想要正好 3个字。1)make,2)目标, 3)) 论点。

【问题讨论】:

  • 一个菜鸟错误:这些是制表符而不是空格吗?

标签: bash makefile


【解决方案1】:

GNU Make 的概要是 make [OPTION]... [TARGET]...,所以我怀疑你唯一的选择是

  1. 寻找或实现一些其他的make 可执行文件来实现你想要的概要,

  2. 使用make ARGS=foo clean 语法,或

  3. 使用像pattern rules这样的黑客:

    clean-%:
        echo $(@:clean-%=%)
    

    使用make clean-foo 调用它,它会去掉“clean-”前缀并打印“foo”。

【讨论】:

  • 你能解释一下你最后的解决方案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 2013-03-08
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
相关资源
最近更新 更多