Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在makefile中将参数传递给目标?_Bash_Makefile - Fatal编程技术网

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

Bash 如何在makefile中将参数传递给目标?,bash,makefile,Bash,Makefile,我想通过传递要删除的二进制文件来清理我的dir。在我的目录中有以下文件: foo.c foo.o foo 我想删除foo.o和foo。现在在我的makefile中,我有以下内容: clean: rm *.o rm [...] #the [...] should be the argument 所以我想运行makecleanfoo,这里的foo是传递给clean目标的参数。我在某个地方读到过,正确的方法应该是简单地在makefile中设置VARABLE$(二进制文件),并在rm命令

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

foo.c foo.o foo
我想删除
foo.o
foo
。现在在我的makefile中,我有以下内容:

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

所以我想运行
makecleanfoo
,这里的
foo
是传递给
clean
目标的参数。我在某个地方读到过,正确的方法应该是简单地在makefile中设置VARABLE
$(二进制文件)
,并在
rm
命令中使用该变量,但是每次我想编译另一个二进制文件时,我都必须编辑该变量。因此,我想将该二进制文件作为参数传递给
clean
目标。怎么做?(而且,我不想发出make-like
make-ARGS=foo-clean
,这太长了,我只需要3个单词。1)make,2)target,3)参数。

GNU-make的概要是
make[OPTION]。。。[TARGET]…
,因此我怀疑您唯一的选择是

  • 查找或实现其他实现所需概要的
    可执行文件

  • 使用
    make ARGS=foo clean
    语法,或

  • 使用类似于:

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


  • 一个新手犯的错误:这些是标签而不是空格吗?你能解释一下你的上一个解决方案吗?
    clean-%:
        echo $(@:clean-%=%)