我需要cd到一个特定的目录,然后简单地运行go run main.go
并启动我的应用程序。我有以下内容:
stand-app: |
$(info Booting up the app for local testing)
cd $(PWD)/cmd/myapp
go run main.go
当我运行目标时,我会得到以下信息:
go run main.go
stat main.go: no such file or directory
make: *** [stand-app] Error 1
但是位置是正确的,我可以简单地通过cd到该目录并运行命令来完成这些步骤。我哪里错了?
谢谢
配方中的每个逻辑行都在不同的shell中运行。当前工作目录是shell的一个属性;当shell消失时,对工作目录的任何更改也会消失。因此,您的cd ...
是一个无操作:它更改了该shell中的工作目录,然后该shell退出,下一个shell从原始工作目录开始。
将这两行合并为一个逻辑行;可能类似于:
stand-app:
$(info Booting up the app for local testing)
cd $(PWD)/cmd/myapp && go run main.go
只是提醒一下:PWD
并不是特别制作的。如果您调用make from的shell设置了它,它将有一个值;如果您调用makefrom的shell没有设置它,它就没有值(或者,如果在父shell中设置不正确,它将具有错误的值(。您可能希望使用make的CURDIR
变量:
stand-app:
$(info Booting up the app for local testing)
cd '$(CURDIR)/cmd/myapp' && go run main.go