首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅将参数值传递给Makefile目标?

如何仅将参数值传递给Makefile目标?
EN

Stack Overflow用户
提问于 2018-06-09 21:13:49
回答 2查看 421关注 0票数 0

我来自NodeJS世界,所以我认为Makefile是npm package.json中的“脚本”部分,这可能是错误的(或者不是?)要做到这一点。

因此,我的想法是在安装新依赖项时自动执行重复操作,方法是键入:

代码语言:javascript
复制
make install github.com/stretchr/testify

并找到一种方法来获得github.com/stretchr/testify参数,而无需使用通常建议的繁重的参数名值声明FOO=bar (=> make install DEP=github.com/stretchr/testify)。

所以,在this answer之后,我尝试了一下:

代码语言:javascript
复制
install %:
    go get $*
    godep save ./...
    git add Godeps vendor
    git commit -m "godep: add $*"

但没有成功:它运行没有任何参数和git commit -m "godep: add"go get

试用版

1 -当我这样做的时候:

代码语言:javascript
复制
install %:
    echo $*

我看到我的“github.com/stretchr/指证”。

当我这样做时,2 -

代码语言:javascript
复制
install %:
    go get ${*}

它循环两次,首先不带任何参数地运行go get,然后运行go get github.com/stretchr/testify (如您所愿)。

看起来${*}代表了一个参数的“数组”,解析目标后的字符组,第一个是installgithub.com/stretchr/testify之间的空格,第二个是github.com/stretchr/testify

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-10 08:31:30

您不能在同一规则中使用显式目标和模式,因此您的规则% install:将不起作用。

你可以通过使用the CMDGOALS variable的GNU make来做到这一点,但是它非常黑客,容易出错,所以我不推荐你这么做。

代码语言:javascript
复制
ARG := $(filter-out install,$(MAKECMDGOALS))

install:
        go get $(ARG)
        godep save ./...
        git add Godeps vendor
        git commit -m "godep: add $(ARG)"

正如你所看到的,对于没有其他参数的情况,或者有多个其他参数的情况,你需要添加处理,当然,如果不把它们放到filter-out列表中,你就不能添加更多的目标,等等。

只是..。我想这不是一个好办法。

你为什么不这样做呢?

代码语言:javascript
复制
install-%:
        go get $*
        godep save ./...
        git add Godeps vendor
        git commit -m "godep: add $*"

然后运行:

代码语言:javascript
复制
make install-github.com/stretchr/testify
票数 2
EN

Stack Overflow用户

发布于 2018-06-09 22:03:15

Make变量可能可以做你想做的事情:

代码语言:javascript
复制
host> cat Makefile
install:
    go get $(P)
    godep save ./...
    git add Godeps vendor
    git commit -m "godep: add $(P)"

host> make install P=github.com/stretchr/testify

但是仅仅使用make来实现这一点可能有些夸张。它不仅仅是一种脚本语言。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50774666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档