使用或不使用MSYS的MinGW makefile(del与rm的区别)

4
我正在Windows上使用MinGW来编译一些东西。我直接从cmd.exe调用mingw32-make,一切(我需要的)都很好。然而,我发现我需要能够从MSYS环境进行编译,并且我在使用copydel命令时出现了问题,它们不能被识别。我知道只需要用cprm替换它们就可以了,但我想在同一个makefile中使用它们。
有没有办法强制msys环境调用系统的delcp命令?
或者更好的办法是,有没有办法区分makefile是从cmd.exe还是msys中调用?那么我就可以为命令设置适当的变量了。这将非常有帮助,因为我可以删除一些其他重复的makefiles。
非常感谢任何帮助。
谢谢
编辑:让事情变得更加困难的是:mingw32-make似乎在从cmd.exe运行时使用sh.exe,如果在PATH中找到的话。这有完全不同的环境变量集。
编辑:好吧,如果有人仍然感兴趣,我最终得到了以下文件,我将它包含在其他Makefiles中:
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有所不同。

是的,但我想避免处理两个makefile,因为它们仅在del/rm、cp/copy方面有所不同。但环境变量可能可以在makefile内部进行检查。 - Zdenek Prusa
可能是操作系统检测Makefile的重复问题。 - user694733
在这种情况下,请使用这些检查来设置例如 CPRM 变量,以执行正确的操作。 - Some programmer dude
@user694733: 是的,谢谢,它有些相似,但我只是在谈论Windows。 - Zdenek Prusa
@Joachim Pileborg 现在问题是哪个环境变量...我看到cmd有SystemRoot,而msys有SYSTEMROOT :) - Zdenek Prusa
显示剩余3条评论
2个回答

1
我遇到了和你相同的情况。我将MSYS目录添加到了PATH环境变量中,这样就可以正常工作了。

-4
将msys添加到路径中,如图所示:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接