Makefile Cygwin:mkdir,“命令的语法不正确。”

时间:2019-08-29 06:29:23

标签: makefile cygwin mkdir

运行以下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>

1 个答案:

答案 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源和编程语言源中提供一些特殊的条件。