【发布时间】:2020-05-18 08:43:19
【问题描述】:
使用我的新 Windows 10 工作站,我无法构建任何项目,因为由于某种原因,make 无法调用 cmd。该命令通常用于检查目录等中的版本号,并导致取消构建过程。
在此处查看相关 makefile 中的一些 sn-ps:
# windows cmd shell
SHELL=$(SYSTEMROOT)/System32/cmd
CC=c:/path/to/compiler
# ...
COMPILER_VALID=FALSE
ifeq ($(DESIRED_VERSION),$(shell "$(CC)"))
COMPILER_VALID=TRUE
endif
ifneq ($(COMPILER_VALID),TRUE)
$(error incorrect compiler version)
endif
# ...
这曾经在我的旧电脑上工作;它仍然按我所有同事的预期工作。但是,当我在当前机器上运行 make 时,它会产生以下输出:
PS C:\Users\Buerger\Project> make release
make: C:Windows/System32/cmd: Command not found
build\makefile.mak:123: *** incorrect compiler version. Stop.
cmd.exe 存在于 C:\Windows\System32\ 中,并且 C:\path\to\compiler 是我机器上的有效目录。据我所知,所有必需的开发工具都已安装。我在这里缺少什么,我无法构建其他人可以构建的可能是什么原因?
编辑地址注释:更改生成文件不是一种选择。 make --version 的输出和SYSTEMROOT 的值是
> make --version
GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
This program built for i686-pc-cygwin
> echo %SYSTEMROOT%
C:\Windows
【问题讨论】:
-
我会放弃这个
SHELL设置,因为无论如何它都是默认设置。还请分享make --version的输出,因为 Make for Windows 有许多不同的变体。 -
嗨 raspy,我添加了该信息。但是,不能丢弃 SHELL。
-
我在 make: C:Windows/System32/cmd: Command not found 中的“C:”之后看到一个缺失的“/”
-
同意:缺少
/绝对是个问题。也许您的SYSTEMROOT变量设置不正确:您没有向我们展示该变量的值来自何处。如果它来自环境,请检查您的环境变量是否设置正确。 -
SYSTEMROOT 没有在 makefile 中定义,它来自环境。
echo %SYSTEMROOT%产生C:\Windows,这似乎与我同事的机器一致。