Gnu在Windows 7 64bit上制作?

时间:2013-06-25 14:15:20

标签: windows-7 64-bit gnu-make

我正在从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

有人可以推荐任何解决方案吗?谢谢。

2 个答案:

答案 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