【发布时间】:2013-11-12 12:16:58
【问题描述】:
我正在使用 MinGW 在 Windows 上编译一些东西。我直接从cmd.exe 打电话给mingw32-make,一切(我需要的)工作正常。但是我发现我需要能够从 MSYS 环境进行编译,并且我遇到了 copy 和 del 命令无法识别的问题。我知道只需用cp 和rm 替换它们,但我想对这两种情况都使用单个makefile。
有没有办法强制msys环境调用系统del和cp命令?
或者更好的是,有没有办法区分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
如果不是,你仍然认为这是一个重复的问题,我当然可以删除这个问题。
由于我不知道的原因,ComSpec 和 COMPSPEC 有所作为。
【问题讨论】:
-
您可能可以检查每个环境所独有的一些环境变量,然后为
cmd.exe环境调用一个makefile,为MSYS调用一个makefile。 -
是的,但我想避免处理两个 makefile,因为它们仅在 del/rm、cp/copy 上有所不同。但环境变量可能可以在 makefile 中检查。
-
在这种情况下,使用这些检查来设置例如
CP和RM变量,这是正确的。 -
@user694733:是的,谢谢,它是相似的,但我只是在谈论 Windows。