Как правило, зависимость следует указывать при использовании target_link_libraries() с ключевым словом PRIVATE, если она используется только реализацией библиотеки, а не в файлах заголовков. Если зависимость дополнительно используется в заголовочных файлах библиотеки (например, для наследования классов), то ее следует указать как ПУБЛИЧНУЮ зависимость. Зависимость, которая не используется реализацией библиотеки, а только ее заголовками, должна быть указана как ИНТЕРФЕЙСНАЯ зависимость.
Я понимаю, как ваш выбор Между этими тремя ключевыми словами влияет на поведение target_link_libraries и target_include_directories, но я не понимаю разницы между тремя случаями, описанными в этом абзаце. Может ли кто-нибудь предоставить игрушечный пример
- использования зависимости в реализации библиотеки, но не в файлах заголовков ()
Код: Выделить всё
PRIVATE - использование зависимости в реализации библиотеки, а также в файлах заголовков ()
Код: Выделить всё
PUBLIC - использование зависимости в заголовочных файлах библиотеки, но не в реализации ()
Код: Выделить всё
INTERFACE
Подробнее здесь: https://stackoverflow.com/questions/697 ... d-in-cmake
Мобильная версия