проект, в нем есть часть, отвечающая за работу бд. Сам модуль определяет интерфейсы в хэдерах, и есть разные реализации этих хэдеров под разные бд. Этот модуль соответственно используют другие таргеты, и плюс сам экзешник. Причем другие таргеты используют только интерфейсы из хэдеров, а имлементация создается и кидается соответственно в мейне.
Так вот, как правильно с точки зрения таргетов и их зависимостей это все организовать с симейке? Вроде бы если только используешь интерфейсный хэдер, то линковать таргет целиком смысла не имеет. Был вариант сделать отдельно таргеты для интерфейсов и для разных бэкендов, в таргетах линковаться к интерфейсам, а в главном таргете уже линковать один из реальных бэкэндов, но вот непонятно насколько это хорошее решение.
Таргет для хедеров тоже норм
проблема в том что cmake пока не умеет, делать инклуды, если делаешь target_include... но он их умеет делать если target_lib
Я могу ошибаться, но как будто бы получаются куча таргетов db_impl1,...,db_implN, и таргет db_head с интерфейсными хедерами; в либах-модулях где нужно тыкать бд делается target_link_libraries(db_head), а в мейне target_link_libraries(main libA libB db_head db_impl1)
нормально про таргеты для интерфейсов и бекендов, их потом собираешь в ехе
Обсуждают сегодня