Здравствуйте, Великий Реверс, Вы писали:
ВР>поэтому юзается экстернал проект
С этим вариантом (который в рамках cmake и называется superproject) есть свои боли. В частности, он не очень легко импортируется во всякие ide. И еще такие external должны уметь инсталлиться, чтобы их можно было подхватить из следующего по цепочке, чего в непубличных наколленных CMakeLists.txt обычно нет. И еще детект изменений и их пересборка тоже похрамывает, но тут есть разные варианты.
У меня проект себя рекурсивно зовет с несколькими стадиями. Первая — 3rdparty с инсталлами в единую stage dir. Потом основной проект, который всякими вариациями find_* добывает себе эти либы.