Bash 如何在makefile中将参数传递给目标?
我想通过传递要删除的二进制文件来清理我的dir。在我的目录中有以下文件: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命令
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-likemake-ARGS=foo-clean
,这太长了,我只需要3个单词。1)make,2)target,3)参数。GNU-make的概要是make[OPTION]。。。[TARGET]…
,因此我怀疑您唯一的选择是
可执行文件
make ARGS=foo clean
语法,或
makecleanfoo
调用它,它会去掉“clean-”前缀并打印“foo”
一个新手犯的错误:这些是标签而不是空格吗?你能解释一下你的上一个解决方案吗?
clean-%:
echo $(@:clean-%=%)