Как от CMake получить путь к include каталогу после find_package?

<PackageName>_DIR выводит путь к <PackageName>Config.cmake.
<PackageName>_ROOT не выводит ничего.
Каких-то других переменных я не нагуглил.
К Boost, например, нашёл переменную Boost_INCLUDE_DIRS, но она специфична для этой библиотеки.

Существует ли нормальный способ добавить <prefix>/<PackageName>*/include в target_include_directories так, чтобы не зависеть от текущего расположения файлов, и вообще от платформы?


Ответы (2 шт):

Автор решения: Fat-Zer

Переменные, которые устанавливает find_package() ни как не нормируются (кроме <Package>_FOUND), так что, вообще говоря, одного гарантированного или хотя бы рекомендованного способа сделать это нет.

Большинство модулей для пути к хедерам, действительно, устанавливают переменную <Package>_INCLUDE_DIRS, некоторые — <Package>_INCLUDE_DIR, какие-то — <Package>_INCLUDE_PATH. Но что именно происходит в конкретном Find-модуле нужно смотреть в его документации (man cmake-modules). Или если он самописный — в самом модуле (команда find_package() вызывает обычный cmake-скрипт).

→ Ссылка
Автор решения: megorit

Нашел интересный способ и заодно разобрался в свойствах CMake. Из таргетов (и не только) можно доставать свойства и задавать их. И даже, насколько понял, создавать новые свойства. Вот как можно этого добиться:

get_target_property(YourVariable YourTarget YOUR_PROPERTY)

В данном случае:

get_target_property(YourIncludeDirs YourTarget INCLUDE_DIRECTORIES)
→ Ссылка