make files typically have a bunch of hard coded partial paths, eg ./foo means 'where I am now, go into sub-folder foo, which was presumably put there when you unzipped this project'.
so when you get something, it should just compile from running its make file in the folder it was in when you got it. Then that resulting library, you have to put somewhere your other code will find it (or tie that code back to where you built it, whatever) so it can find it.
This can get exotic between the window's path, the current path, and the makefile's path(s) that it defines. Some makefiles are cleaner than others.
if the current one depends on others, you have to tie that path(s) in if it is not in some default place that works.
is something not working, or are you just wanting to know generally how it works?
https://www.cs.swarthmore.edu/~adanner/tips/cmake.php may help
in there you see a couple of examples like I am saying:
cumin[w01-cpp]$ ./oglfirst
cumin[w01-cpp]$ ./test_geometry
Make syntax is cryptic by design. I would try to avoid it and let your IDE to the dirty work of using make under the hood, if you can. Fooling with makefiles by hand is … 1980s approach IMHO and only to be done in the most extreme emergencies.