Difference Between ExternalProject_Add() And add_subdirectory()
It can be confusing when you want to add-in a CMake-managed project into your current project, which is also CMake-managed. There are a few ways of doing so, one being ExternalProject_Add() and the other add_subdirectory(). After-all, add_subdirectory() doesn’t have to actually be a subdirectory (it can be any directory on the system).
ExternalProject_Add() is much more powerful than add_subdirectory().