Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MinGW makefile with or without MSYS (del vs rm)

I am using MinGW for compiling some stuff on Windows. I call mingw32-make directly from cmd.exe and everything (I need) works fine. However I found out I will need to be able to compile from the MSYS environment and I run in problems with copy and del commands not beeing recognized. I know it is only matter of replacing them with cp and rm, but I would like to use single makefile for both cases.

Is there a way to force msys environment to call system del and cp commands?

Or better yet, is there a way to distinguish whether the makefile is called from cmd.exe or msys? Than I could set appropriate variables for the commands. This would be quite helpfull, because I could then remove some other duplicate makefiles.

Any help is appreciated.

Thanks

EDIT: And to make things more difficult: mingw32-make seems to be using sh.exe if found in PATH when run from cmd.exe. This has completely different set of environment variables.

EDIT: OK, if anyone is still interested, I ended up with the following file, which I include to my other 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

If not, and you still think this is a duplicate question I can of course delete this question.

For reasons unknown to me ComSpec and COMPSPEC make a difference.

like image 830
Zdenek Prusa Avatar asked Dec 12 '25 02:12

Zdenek Prusa


1 Answers

I met the same condition with you. I add MSYS directory to PATH environment virable, and it works well.

like image 173
eastdys Avatar answered Dec 14 '25 20:12

eastdys



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!