Start by downloading a release source tarball from libvirt's site. E.g. I downloaded https://libvirt.org/sources/libvirt-3.0.0.tar.xz
You'll need Cygwin to have a chance in hell of compiling stuff. I usually use Chocolatey to get that set up, i.e. choco install cygwin -y. You're a free man/woman, do what you want.
Once you have cygwin, it is helpful to have a nice little cygwin package manager called apt-cyg. Basically it's just a script you need to have on your PATH or in /usr/bin. The instructions are kind of dumb because they tell you to use lynx to install it, but you need it to install lynx. Just D/L it and stick it in cygwin's /usr/bin folder, then chmod +x it.
The overall philosophy of compiling things on Linux (and hence Cygwin) is (with credits to these excellent little articles on the Ubuntu site):
- Unzip your release source tarball
 - Run the ./configure script with some magic combination of arguments derived from a readme in the unzipped folder or online docs
 - Fail because there are headers/libraries missing on your computer
 - Cry
 - Find the missing bits & bobs using 
apt-file/apt-cachecygcheck -p <whateveryoucantfind> - Squint at the description of all the suspects cygcheck farted out, and 
apt-cyg installthe likely culprit - Repeat step 2 through 6 until ./configure succeeds or you are reduced to a blubbering mess
 - Run 
makeand wait forever - Holy shit, you actually made it to this point?
 - If this is some kind of executable you want to install into your arsenal of binaries, run make install
 
This is exactly what we are going to do for libvirt. By the time I was done cygchecking and apt-cyging shit down, I had all this crap in my cygwin install: https://gist.github.com/masaeedu/b51c23395a198a3ced5d2e20e32b797a. I don't know which parts of this are necessary for libvirt, you should probably just start by installing all that shit and narrow it down if you have time.
However, when I moved to the make step, I was still getting missing header errors. What I was missing was headers for SunRPC; an extinct library which is ported in cygwin's libtirpc package.
Unfortunately, apt-cyg install libtirpc-devel will put rpc/*.h under /usr/include/**tirpc**/rpc/*.h, so the #include <rpc/blah.h> directives still won't work. The trick is to make /usr/include/tirpc a first-class location from which stuff is included, which you can accomplish by adding the env var CPPFLAGS=-I/usr/include/tirpc to your invocation of ./configure.
Your invocation of ./configure should look like (I obtained and tweaked the flags from the bottom of libvirt's "Windows" page):
$ CPPFLAGS=-I/usr/include/tirpc ./configure --without-sasl --without-avahi --without-polkit --without-xen --without-qemu --without-lxc --without-openvz --without-libvirtdOk, so now with our extra hack, we should finally be able to make. If you've got more than 1 core and don't want to wait a thousand years, make has the make -j8 option to farm out compilation to 8 jobs.
After waiting a bit, make should succeed to compile and link libvirt itself and a bunch of handy utils. Congrats! Now you can run make install to add them to your arsenal of tools and use them for great good!