如何在makefile中将参数传递给目标



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

foo.c foo.o foo

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

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

所以我想运行make clean foo,这里的foo将是传递给clean目标的参数。我在某个地方读到,正确的方法应该是简单地在makefile的内创建可用的$(BINARIES),并在rm命令中使用该变量,但每次编译另一个二进制文件时,我都必须编辑该变量。因此,我想将该二进制文件作为参数传递给clean目标。如何做到这一点?(此外,我不想发布类似make ARGS=foo clean的make,这太长了,我想要正好3个单词。1(make,2(target,3((参数。

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

  1. 查找或实现其他make可执行文件,该可执行文件实现您想要的概要,

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

  3. 使用类似破解的模式规则:

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

    使用make clean-foo调用它;清洁-";前缀并打印";foo";。

最新更新