gpt4 book ai didi

windows - dmake 中的 shell 命令添加 '/S'

转载 作者:可可西里 更新时间:2023-11-01 09:30:34 25 4
gpt4 key购买 nike

我正在使用 MinGW 系统编译 Xindy。 dmake 总是因错误而终止,我已将其缩小到 Makefile 中的几行。尝试对此运行 dmake:

SHELL = /bin/sh
some-target:
target=`echo info-recursive | sed s/-recursive//`;

如果您使用的是常规 Windows CMD 而不是 MinGW shell,则必须更改 SHELL 变量的位置以指向类似“C:/MinGW/msys/1.0/sh.exe”的位置。无论如何,以上失败:

CreateProcess failed (2).
dmake: Error executing 'bin/sh /S /c "target=`echo info-recursive | sed s/-recursive//`;"': No such file or directory
dmake: Error code -1, while making 'some-target'

已安装 Sed 和 sh,它们工作正常。当我尝试运行给定的命令作为错误消息本身的输出时,我得到了这个:

$ /bin/sh /S /c "target=`echo info-recursive | sed s/-recursive//`;"
/bin/sh: /S: No such file or directory

所以看起来 dmake(或其他东西)正在将 '/S/c' 添加到 shell 参数,bash 认为它是一个文件名,然后在找不到它时失败。

有没有人有这方面的经验或知道我该如何解决这个问题?

最佳答案

dmake 源代码的简要检查表明问题在于 $(SHELL) 设置得太晚并且在启动时仍然为空(macros.mk , 第 37 行):

11  .IF $(SHELL) == $(NULL)
...
15 SHELL *:= $(COMSPEC)
...
...
35 .IF $(SHELL) == $(COMSPEC)
36 .IF $(COMSPEC:lf) == cmd.exe
37 SHELLFLAGS *:= $(SWITCHAR)S $(SWITCHAR)c

您可以通过将 SHELL="C:/MinGW/msys/1.0/sh.exe" 添加到您的 dmake 命令行调用来解决此问题。

(我已经很多年没有使用 dmake 了,所以这里可能会弄错,但如果你能得到一个看起来像自动没收的 makefile 来与 dmake 一起工作,我会印象深刻,dmake 的 IIRC 有一些不同的味道。它可能更容易找到 GNU make 或类似的。)

关于windows - dmake 中的 shell 命令添加 '/S',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com