First off, I'm relatively new to C - I know the language somewhat, but never looked too much into the whole build process.
From what I'm seeing, if I want to use a third party library and have it in source code form, I would compile that library separately (which yields a platform and architecture specific binary blob?), copy over the .h files from that library into my own project, and then tell my linker that it should link against that.
From what I've read, it seems that I should be using the same compiler and make sure they compile for the same platform, which makes me wonder how I should structure my project and build.
It seems unwise to work with pre-compiled libraries, and instead I should check in the source code of those libraries (e.g., SDL, Lua, NCurses, any JSON Parser etc.) and then build those libraries from scratch every time I (re)build my application.
That seems like a huge pain though, because of different build systems. I come from the C# world where packaging systems (and the mostly platform-independent binary library format) make this a lot easier.
What is the right way to work with libraries in a C project? (No C++)