【问题标题】:MinGW makefile with or without MSYS (del vs rm)带或不带 MSYS 的 MinGW makefile(del 与 rm)
【发布时间】:2013-11-12 12:16:58
【问题描述】:

我正在使用 MinGW 在 Windows 上编译一些东西。我直接从cmd.exe 打电话给mingw32-make,一切(我需要的)工作正常。但是我发现我需要能够从 MSYS 环境进行编译,并且我遇到了 copydel 命令无法识别的问题。我知道只需用cprm 替换它们,但我想对这两种情况都使用单个makefile。

有没有办法强制msys环境调用系统delcp命令?

或者更好的是,有没有办法区分makefile是从cmd.exe还是msys调用的?比我可以为命令设置适当的变量。这会很有帮助,因为我可以删除其他一些重复的 makefile。

感谢任何帮助。

谢谢

编辑: 让事情变得更加困难:mingw32-make 似乎在使用sh.exe,如果从cmd.exe 运行时在 PATH 中找到。这有一组完全不同的环境变量。

编辑:好的,如果有人仍然感兴趣,我最终得到了以下文件,我将其包含在我的其他 Makefile 中:

ifeq ($(OS),Windows_NT) 
RM = del /Q /F
CP = copy /Y
ifdef ComSpec
SHELL := $(ComSpec)
endif
ifdef COMSPEC
SHELL := $(COMSPEC)
endif
else
RM = rm -rf
CP = cp -f
endif

如果不是,你仍然认为这是一个重复的问题,我当然可以删除这个问题。

由于我不知道的原因,ComSpecCOMPSPEC 有所作为。

【问题讨论】:

  • 您可能可以检查每个环境所独有的一些环境变量,然后为cmd.exe 环境调用一个makefile,为MSYS 调用一个makefile。
  • 是的,但我想避免处理两个 makefile,因为它们仅在 del/rm、cp/copy 上有所不同。但环境变量可能可以在 makefile 中检查。
  • OS detecting makefile的可能重复
  • 在这种情况下,使用这些检查来设置例如CPRM 变量,这是正确的。
  • @user694733:是的,谢谢,它是相似的,但我只是在谈论 Windows。

标签: c windows makefile mingw


【解决方案1】:

我和你遇到了同样的情况。我将MSYS目录添加到PATH环境virable中,效果很好。

【讨论】:

    【解决方案2】:

    将msys添加到如图所示的路径中:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 2012-01-10
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多