Windows determines which files are executable by their extension. Native executables must have the extension
.exe. Cygwin contains some magic so that when you refer to a file
install and there is no file by that name, it tries
install.exe. It does this even in contexts that aren't about executing because when a program is looking up the metadata of a file, the library has no way to know whether the program intends to execute it later.
So if there is a file called
install.exe in the current directory,
make sees it and thinks that it is the target of the
install rule. If
install.exe is more recent than the prerequisites of the
make determines (correctly from its point of view) that there is nothing to do.
You can add the line
.PHONY: install to the makefile. That tells make that the
install target is not a real file, and make will ignore any file by that name.
Alternatively, rename or move
install.exe out of the way.