我正在从Windows-32 XP迁移到Windows 7 64位,并且我的项目构建存在问题。第一步 - 出现目录创建时出现错误。我尝试了MinGW和MSYS,32位和64位。似乎没有人不能调用md命令。这是我创建的非常简单的Makefile,用于本地化问题:
all:
md C:\_test\trunk\build\win32
MinGW(mingw-w64's toolchains targetting Win64)make:
C:\_tmp>C:\mingw64\bin\mingw32-make.exe
md C:\_test\trunk\build\win32
process_begin: CreateProcess(NULL, md C:\_test\trunk\build\win32, ...) failed.
make (e=2): The system cannot find the file specified.
Makefile:2: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
MSYS(64bit)make:
C:_tmp>C:\mingw64\msys\bin\make.exe
md C:\_test\trunk\build\win32
make.exe": md: Command not found
make.exe": *** [all] Error 127
从命令行运行相同的命令没有问题:
md C:\_test\trunk\build\win32
有人可以推荐任何解决方案吗?谢谢。
答案 0 :(得分:1)
使用内置命令(它们都以&开头)在makepp中修复此问题:
all:
&mkdir -p C:/_test/trunk/build/win32
虽然认真,但这可能不是你唯一的问题。看起来你的PATH没有通过。我不认为make会吞下它,可能它已经在你的Shell的设置中消失了。
但是我想知道你是否正在使用MinGW Shell,因为那时你应该使用Unix路径语法,就像我在上面的Makefile片段中所做的那样。即使在{command,cmd}。{com,exe}中,只有在调用exes时,才需要反斜杠。为了使这个可移植,makepp提供变量$/
,这是您的机器的正确斜杠:
foo/bar:
path$/to$/my$/exe some/arg
makepp还有很多。除了做几乎所有GNU make之外,还有更多有用的东西,你甚至可以通过一些Perl编程扩展你的makefile。
答案 1 :(得分:0)
当PATH变量具有带括号的路径时,似乎GNU make在Windows 7 64位上混淆。 解决方法是指定命令的完整路径并通过shell调用内置命令:
MKDIR := C:\Windows\System32\cmd.exe /C MKDIR
all:
$(MKDIR) C:\_test\trunk\build\win32