运行以下Makefile
会显示错误消息
该命令的语法不正确。
这是因为makefile调用了Windows命令mkdir
而不是Cygwin的mkdir
。即使我将cygwin路径放在环境变量中的第一位,它仍然调用窗口mkdir
而不是Cygwin窗口。一种快速的修复方法是使用mkdir.exe
。然后称为Cygwin。我正在寻找一种在不更改Makefile
的情况下调用正确的方法,有没有办法告诉Makefile
应该调用哪个方法。设置中有东西吗?
all:
echo "make started"
mkdir -p test/tmp
echo "make ended"
输出:
C:\Users\me\Desktop\New_folder>make
echo "make started"
"make started"
mkdir -p test/tmp
The syntax of the command is incorrect.
make: *** [all] Error 1
C:\Users\me\Desktop\New_folder>
答案 0 :(得分:0)
我正在寻找一种无需更改
Makefile
即可调用正确方法的方法,有没有办法告诉Makefile
它应调用哪个方法。设置中有东西吗?
您所指的是哪个设置尚不清楚,但问题的根源是Makefile使用的shell。您的情况似乎是在获取cmd.exe,因此不合格的“ mkdir”将触发其内置功能。不执行路径搜索。
您可以尝试通过指示make
使用不同的外壳来解决此问题,例如:
make SHELL=\path\to\cygwin\bash.exe
或者您可以首先从make
shell启动bash
。
但是,请注意,即使可以,但这可能不是您遇到的最后一个问题。不是专门针对Windows构建的Makefile(大多数情况下)通常无法适应完全不同的Windows环境。在这方面,我对MinGW以及基于Automake的makefile有了更多的运气,但是它仍然需要在makefile源和编程语言源中提供一些特殊的条件。