我正在尝试编写一个超级简单的文件Makefile来在Go项目中运行测试。项目的依赖项已供应,但我想跳过这些测试。从命令行运行时,我只是做
$ go test $(go list ./... | grep -v /vendor/)
Run Code Online (Sandbox Code Playgroud)
但是,当我把它变成Makefile这样的时候:
test:
go test $(go list ./... | grep -v /vendor/)
.PHONY: test
Run Code Online (Sandbox Code Playgroud)
该表达式将不被评估:
$ make
go test
? github.com/m90/some-repo [no test files]
Run Code Online (Sandbox Code Playgroud)
我如何获得make以类似于shell的方式插值表达式?
根据具体情况,在使用shell函数扩展配方期间评估命令可能更有用:
test:
go test $(shell go list ./... | grep -v /vendor/)
.PHONY: test
Run Code Online (Sandbox Code Playgroud)
这将使包名称成为配方的一部分,并且在执行时通常会打印子命令的结果。
在Makefile配方部分中,您将需要使用escape $使用第二个$:
test:
go test $$(go list ./... | grep -v /vendor/)
.PHONY: test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |