command-line - 如何从命令行将参数传递给 Makefile?

标签 command-line parameters makefile arguments

如何从命令行将参数传递给 Makefile?

我明白我能做到

$ make action VAR="value"
$ value

Makefile

VAR = "default"
action:
    @echo $(VAR)

如何获得以下行为?

$ make action value
value

怎么样

$make action value1 value2
value1 value2

最佳答案

你可能不应该这样做;你正在打破 Make 工作的基本模式。但它是:

action:
        @echo action $(filter-out $@,$(MAKECMDGOALS))

%:      # thanks to chakrit
    @:    # thanks to William Pursell

编辑:
解释第一个命令,

$(MAKECMDGOALS) 是命令行上拼写的“目标”列表,例如“ Action 值1值2”。

$@automatic variable规则目标的名称,在本例中为“action”。

filter-out 是一个从列表中删除某些元素的函数。所以 $(filter-out bar, foo bar baz) 返回 foo baz (它可以更微妙,但我们在这里不需要微妙)。

将它们放在一起,$(filter-out $@,$(MAKECMDGOALS)) 返回在命令行上指定的目标列表,而不是“action”,它可能是“value1 value2” .

关于command-line - 如何从命令行将参数传递给 Makefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6273608/

相关文章:

c++ - CMake 和 Flex/Bison

makefile - GNU makefile 中的通配符

macos - 用于更改安全和隐私高级设置的终端命令

bash - 如何从命令行重新加载 .bash_profile

jsf - 如何将参数从模板客户端传递给主模板,然后在复合属性中使用它?

java - 在构造函数中使用 getter 初始化变量

makefile - 用于将所有 inkscape svg 导出为 pdf 的 make 文件

linux - 命令行日志文件中时间的分箱直方图

python - 如何对已保存的估算器模型执行简单的 CLI 查询?

c# - 方法应该处理空值吗?在这种情况下的最佳实践?