#[=======================================================================[.rst: myx_find_packages ----------------- Вспомогательная функция для поиска зависимостей:: myx_find_packages() Упрощённый способ поиска необходимых и опциональных зависимостей. Для поиска зависимостей с учётом особенных требований (например, номер версии) следует использовать функции `find_package` и `pkg_check_modules`. Параметр `REQUIRED` содержит перечисление необходимых зависимостей для поиска с помощью функции `find_package`. Параметр `OPTIONAL` содержит перечисление опциональных зависимостей для поиска с помощью функции `find_package`. Параметр `PKG_REQUIRED` содержит перечисление необходимых зависимостей для поиска с помощью функции `pkg_check_modules`. Параметр `PKG_OPTIONAL` содержит перечисление опциональных зависимостей для поиска с помощью функции `pkg_check_modules`. #]=======================================================================] include_guard(GLOBAL) macro(myx_find_packages) set(options) set(oneValueArgs) set(multiValueArgs REQUIRED OPTIONAL PKG_REQUIRED PKG_OPTIONAL) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) foreach(iter ${ARG_REQUIRED}) find_package(${iter} REQUIRED) endforeach() foreach(iter ${ARG_OPTIONAL}) find_package(${iter}) endforeach() if(ARG_PKG_REQUIRED) find_package(PkgConfig REQUIRED) foreach(iter ${ARG_PKG_REQUIRED}) string(TOUPPER ${iter} iu) pkg_check_modules(${iu} REQUIRED ${iter}) endforeach() endif() if(ARG_PKG_OPTIONAL) find_package(PkgConfig REQUIRED) foreach(iter ${ARG_PKG_OPTIONAL}) string(TOUPPER ${iter} iu) pkg_check_modules(${iu} ${iter}) endforeach() endif() foreach(__iter IN LISTS oneValueArgs multiValueArgs) unset(ARG_${__iter}) endforeach() unset(ARG_UNPARSED_ARGUMENTS) unset(multiValueArgs) unset(oneValueArgs) unset(options) endmacro(myx_find_packages)