Difference between Cygwin & MinGW?

I trying my C++ project cross platform, and I’m considering using Cygwin/MinGW.
what is the difference between Cygwin & MinGW??

cygwin is an attempt to create a complete UNIX/POSIX environment on Windows. To do this it uses various DLLs that unfortunately have a user-unfriendly license. MinGW is a C/C++ compiler suite which allows you to create Windows executables without dependancy on such DLLs - you only need the normal MSVC runtimes.

You can also get a small UNIX/POSIX like environment, compiled with MinGW called [MSYS]( It doesn't have anywhere near all the features of Cygwin, but is ideal for programmers wanting to use MinGW.