有一个不应硬编码但应在规则调用时作为参数传递的参数[重复]

Posted

技术标签:

【中文标题】有一个不应硬编码但应在规则调用时作为参数传递的参数[重复]【英文标题】:Have an argument that should not be hardcoded but should be passed as an argument at the time of rule invocation [duplicate] 【发布时间】:2019-11-27 04:28:15 【问题描述】:

有一个makefile,其中规则dev-create-empty-migration,目前,这个规则有硬编码参数accounts_table,这个参数不应该是硬编码的,但应该在规则调用时作为参数传递。 e. G。制作dev-create-empty-migration accounts_table

有什么想法吗?

.PHONY: dev-create-empty-migration
dev-create-empty-migration:
    migrate create -ext sql -dir
./pkg/acc/repo/postgres/migrations accounts_table

【问题讨论】:

检查this answer,它可能会解决你的问题 【参考方案1】:

你应该使用一个变量并在其中存储一些东西。通过使用?=,首先搜索参数。如果找到,则使用参数,否则使用默认内容。

$ cat Makefile 
VAR     ?= derp
test:
        @echo $(VAR)
$ make
derp
$ make VAR=lala
lala

仅仅因为它很有趣,您还可以执行以下操作。这省略了额外参数的使用,但你当然可以做一些混合。

$ cat Makefile 
VAR     := None

dev-create-empty-migration-%_table:
        $(eval VAR=$(patsubst dev-create-empty-migration-%,%,$@))
        @echo $(VAR)
$ make dev-create-empty-migration-derp_table
derp_table                 

【讨论】:

以上是关于有一个不应硬编码但应在规则调用时作为参数传递的参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

渲染 Json+Ld 脚本时,ASP.NET Core 不应在 TagBuilder 中编码属性值

如何隐藏 Tabbarcontroller 的第一个视图控制器并直接转到下一个控制器但应在底部显示标签栏项目

如何向Webservice里传递类参数

python怎么向类中的函数传递参数

C#在方法调用中,参数按值传递与按引用传递的区别是啥?

JS怎么样调用IOS并且传递参数?