1

我正在从 Windows-32 XP 迁移到 Windows 7 64 位,并且我的项目构建存在问题。错误出现在第一步 - 创建目录。我尝试了 32 位和 64 位的 MinGW 和 MSYS 品牌。似乎没有人不能调用 md 命令。这是我为本地化问题而创建的非常简单的 Makefile:

all:
md C:\_test\trunk\build\win32

MinGW(针对 Win64 的 mingw-w64 的工具链)使:

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 ) 使:

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

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

4

2 回答 2

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。

于 2013-06-25T20:58:23.667 回答
0

当 PATH 变量具有带括号的路径时,GNU make 在 Windows 7 64 位上似乎很困惑。一种解决方法是指定命令的完整路径并通过 shell 调用内置命令:

MKDIR := C:\Windows\System32\cmd.exe /C MKDIR

all:
    $(MKDIR) C:\_test\trunk\build\win32
于 2013-10-18T14:08:26.683 回答