2023-07-30 10:33:09 +00:00
|
|
|
|
#[=======================================================================[.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`.
|
|
|
|
|
|
|
|
|
|
#]=======================================================================]
|
|
|
|
|
|
2022-10-04 03:08:31 +00:00
|
|
|
|
include_guard(GLOBAL)
|
|
|
|
|
|
2023-07-30 10:33:09 +00:00
|
|
|
|
macro(myx_find_packages)
|
2022-10-04 03:08:31 +00:00
|
|
|
|
set(options)
|
|
|
|
|
set(oneValueArgs)
|
2023-07-30 10:33:09 +00:00
|
|
|
|
set(multiValueArgs REQUIRED OPTIONAL PKG_REQUIRED PKG_OPTIONAL)
|
2022-10-04 03:08:31 +00:00
|
|
|
|
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
|
|
2023-07-30 10:33:09 +00:00
|
|
|
|
foreach(iter ${ARG_REQUIRED})
|
2022-10-04 03:08:31 +00:00
|
|
|
|
find_package(${iter} REQUIRED)
|
|
|
|
|
endforeach()
|
|
|
|
|
|
2023-07-30 10:33:09 +00:00
|
|
|
|
foreach(iter ${ARG_OPTIONAL})
|
|
|
|
|
find_package(${iter})
|
|
|
|
|
endforeach()
|
2022-10-04 03:08:31 +00:00
|
|
|
|
|
2023-07-30 10:33:09 +00:00
|
|
|
|
if(ARG_PKG_REQUIRED)
|
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
|
foreach(iter ${ARG_PKG_REQUIRED})
|
|
|
|
|
string(TOUPPER ${iter} iu)
|
|
|
|
|
pkg_check_modules(${iu} REQUIRED ${iter})
|
2022-10-04 03:08:31 +00:00
|
|
|
|
endforeach()
|
|
|
|
|
endif()
|
|
|
|
|
|
2023-07-30 10:33:09 +00:00
|
|
|
|
if(ARG_PKG_OPTIONAL)
|
|
|
|
|
find_package(PkgConfig REQUIRED)
|
|
|
|
|
foreach(iter ${ARG_PKG_OPTIONAL})
|
|
|
|
|
string(TOUPPER ${iter} iu)
|
|
|
|
|
pkg_check_modules(${iu} ${iter})
|
2023-07-30 07:10:29 +00:00
|
|
|
|
endforeach()
|
|
|
|
|
endif()
|
|
|
|
|
|
2024-03-18 21:16:53 +00:00
|
|
|
|
foreach(iter IN LISTS oneValueArgs multiValueArgs)
|
|
|
|
|
unset(ARG_${iter})
|
2022-10-04 03:08:31 +00:00
|
|
|
|
endforeach()
|
|
|
|
|
unset(ARG_UNPARSED_ARGUMENTS)
|
|
|
|
|
unset(multiValueArgs)
|
|
|
|
|
unset(oneValueArgs)
|
|
|
|
|
unset(options)
|
2023-07-30 10:33:09 +00:00
|
|
|
|
endmacro(myx_find_packages)
|