title: What is Cmake file and why do we use it when we have VIsual studio
body: <p>Sorry for asking such basic question. Being a beginner in C++, I'm puzzled about a lot of things:</p>
  <ol>
  <li><p>if we have Visual stuido and other IDEs, as well as Cygwin as compilers, what kind of roles do CMake play in helping a C++ programmer to develop programmes? Can we just write C++ programmes without using C Make?</p>
  </li>
  <li><p>I understand header files are like prototypes of functions that will be used in C++ files, or declarations of them, so I assume all header files should be accompanied by actual library files in the form of C++ files, as that's where the functions know what to do when being called. However,this is not usally the case, as there are header only libraries such as PyBind11.</p>
  </li>
  <li><p>What is bash? is it like another Windows command prompt? Whats its relationship wth C++?</p>
  </li>
  <li><p>Why do we have function macros and what is its advantages over normal functions?</p>
  </li>
  </ol>
  <p>Thank you very much!</p>