I'm a student, and I don't have much expirience with the building process. In the last few days i've read something about CMake and others build system generators, but other than that I don't know anything about this world.
I realized that i should learn something about this topic because I wanted to use a third party library in a project and I spent a lot of time just to be able to build something. In particular I wanted to try the telegram database library (https://github.com/tdlib/td) and, having followed the installation instructions (I'm using Windows and writing in c++), I got a folder without knowing exactly what to do next. After having learnt a little bit of Cmake, I managed to get the lib, include and bin folders, to copy them in my project and to build everything.
Is this the standard process to integrate an external library in a project? Do I really have to install separately all third party libraries and then integrate them in a single project?
The other solution I can think of is to include the source code of the external libraries in the project and to have a top CMakeLists.txt file that takes care of reaching the CMakeLists.txt files of all the libraries. The problem with this is that, for example, some third party libraries don't give away their source code.
On the other hand, I find the first solution a bit ugly: what if an external library (for example the telegram database library) depends on some other external libraries (in this case zlib, openssl...)? How can i know in advance that a certain lib has to be linked to another specific lib if I don't have a CMakeLists.txt file?
Is there another way / another tool to manage the build system without having to manually write some scripts that take care of all the dependencies?