title: What is the relationship between use of `git submodules` and `ExternalProject_Add` for dependency mangement in CMake?
body: <p>I've spent a lot of time recently following a long gone developer's vague and incorrect build instructions for a C++ project I'm working on. Therefore, I'm writing a new build system and I'm looking for the best way to do it. I've settled on using the <code>ExternalProject_Add</code> command in CMake for collecting and building dependencies before the project targets but I've also found an excellant <a href="https://blog.kitware.com/cmake-superbuilds-git-submodules/" rel="nofollow noreferrer">article</a> suggesting use of git submodules, which looks like it does a very similar, if not the same thing. So my question: What is the relationship between <a href="https://www.vogella.com/tutorials/GitSubmodules/article.html" rel="nofollow noreferrer">git submodules</a> and <a href="https://cmake.org/cmake/help/latest/module/ExternalProject.html" rel="nofollow noreferrer">ExternalProject_Add</a>? </p>