我试图编写一个超级简单的Makefile
来在Go项目中运行测试。该项目的依赖项是出售的,但我想跳过这些测试。从命令行运行时,我只需执行
$ go test $(go list ./... | grep -v /vendor/)
然而,当我把它变成这样的Makefile
时:
test:
go test $(go list ./... | grep -v /vendor/)
.PHONY: test
不会评估表达式:
$ make
go test
? github.com/m90/some-repo [no test files]
如何让shell以类似shell的方式插入表达式?
答案 0 :(得分:3)
在Makefile配方部分中,您需要使用第二个$
使用$
转义:
test:
go test $$(go list ./... | grep -v /vendor/)
.PHONY: test
答案 1 :(得分:2)
根据具体情况,在使用shell函数扩展配方期间评估命令可能更有用:
test:
go test $(shell go list ./... | grep -v /vendor/)
.PHONY: test
这将使包名称成为配方的一部分,并且通常在执行时打印子命令的结果。