Из комментов в прошлых постах я кое что изменил. Огромное спасибо всем, кто помогает мне учиться:
Переделал структуру на гите и вынес include по совету из коммента
Include статической библиотеки
Взял spdlog для логов. Пока не оборачивал - сделаю позже.
Убрал Timer и this_thread::sleep
переделанный основной цикл
Как советовали, вместо того, чтобы заниматься фигней и получать состояние выполнения bool, сделал возврат состояния EXIT_SUCCESS/EXIT_FAILURE прямо из Application, ну и убрал все инициализации в конструктор
Структура проекта больше похожа на другие проекты на гите:
src / include / thirdparty / example (куда убрал базовый проект. Он пока пустоват. Займусь)
Более аккуратная структура
Инициализация запускаемого проекта проходит теперь через два extern.
Один прокидывает настройки приложения (разрешение, название, лимит кадров, название стартовой сцены)
Второй регистрирует сцены в SceneManager
Ну и удалил бгмерзский ServiceProvider. Это была ну ооочень плохая идея. Возможно, не буду изобретать велосипед, а просто возьму потом какую-нибудь DI библиотеку типа Boost.DI
Основной работы прибавилось, так что занимаюсь пет-проектом пореже. Спасибо всем кто участвует и помогает!