title: How C++ organize(manage) third-party lib?
body: <p><em>(I've just edited the question to be more specific)</em></p>
  
  <p>I know that this question might be too general to answer, but I'm just can not find good tutorial on this, so trying to seek for help here.</p>
  
  <p>I'm new to C++, previously my main programing language is Java and Python. The way that C++ manage third-party lib is somehow confusing for me......While Python can easily install things with pip, Java can import the JAR, how C++ organize those things? </p>
  
  <p>I would like to split my question into few parts:
  Here is some understanding and question of mine:</p>
  
  <ol>
  <li><p>As long as the compiler, or IDE,  know the path of the lib, then everything is fine. So when saying <code>install</code>, we just add the path of the lib to some system path. And for IDE, we just config the setting so that it can resolve the lib in given path. Correct me if anything is wrong.</p></li>
  <li><p>Some C++ lib are all source code, and some contains sth. like <code>.so</code> or <code>.dll</code>, what is that? And what's the difference? I saw some lib saying that it can be used with simply include a few headers, but some require static linking, what does it mean?</p></li>
  <li><p>What's is a general good approach to manage all those lib? (For example, in python, <code>pip</code> will simply install to some global scope, or we use vitrual env to manage that. Then anything similar to pip in C++? </p></li>
  <li><p>More specifically, I'm using CLion, and Clion use CMake, so maybe all I suppose to do is config the CMakeList.text correctly and then the IDE will resolve all lib and compile correctly?</p></li>
  </ol>
  
  <p>Again sorry for such general and somehow opaque question, but I'm totally lost as a newb for C++, which is much more complicated than Python and Java I used before.....</p>
  
  <p>Any good tutorials might be of great help, thanks!</p>