错误:make:***没有规则可以使目标`makefile'。停止。使用Powershell和Gnuwin32

时间:2019-01-22 18:19:28

标签: powershell makefile gnu-make gnuwin32

我正在研究名为“好奇的月亮”的编码教程/书。任务之一是规范化并从Postgres表中放置的CSV文件中加载数据。数据库名称为“ enceladus”,表名称为“ master_plan”。有人告诉我使用make来执行此操作。我不知道如何在PowerShell中运行Makefile。

我在运行Windows 10的Windows笔记本电脑上安装了make.exe的GNUWin32。我使用PowerShell运行make.exe。我通过运行notepad $profile来完成此任务,并将New-Item alias:make -Value 'C:\Program Files (x86)\GnuWin32\bin\make.exe'保存在文件中。我给它一个新的别名,因为我收到一条错误消息。现在,当我这样称呼别名时:

PS C:\Users\Sabrina> make

我收到此错误:

  

make:***未指定目标,也未找到任何makefile。停止。

我以崇高的态度编写了Makefile,并将其保存为makefile扩展名。它与make.exe在同一文件夹'C:\ Program Files(x86)\ GnuWin32 \ bin'中,并命名为Makefile。我尝试将其运行为

PS C:\Users\Sabrina> make -f Makefile

然后我得到了错误

  

make:Makefile:没有这样的文件或目录

我不确定如何打开并运行Makefile。

这是我在Makefile中的代码:

DB=enceladus
BUILD=${CURDIR}/build.sql
SCRIPTS=${CURDIR}/scripts
CSV='${CURDIR}/data/master_plan.csv'
MASTER=$(SCRIPTS)/import.sql
NORMALIZE = $(SCRIPTS)/normalize.sql
all: normalize
    psql $(DB) -f $(BUILD)
master: 
    @cat $(MASTER) >> $(BUILD)
import: master 
    @echo "COPY import.master_plan FROM $(CSV) WITH DELIMITER ',' HEADER CSV;" >> $(BUILD)
normalize: import
    @cat $(NORMALIZE) >> $(BUILD)
clean:
    @rm -rf $(BUILD)

1 个答案:

答案 0 :(得分:0)

MakefileC:\Program Files (x86)\GnuWin32\bin中,但是您当前的工作目录是C:\Users\Sabrina。在运行makemake -f Makefile时,该命令在当前工作目录中而不是在可执行文件所在的目录中查找Makefile。

将Makefile放入当前工作目录中,问题将消失。

Move-Item 'C:\Program Files (x86)\GnuWin32\bin\Makefile' .
make