Использование включить в cmake? - PullRequest
0 голосов
/ 01 июня 2019

Я не совсем понимаю, что такое использование в cmake.

В соответствии с официальной документацией

Загрузка и запуск кода CMake из указанного файла.Переменная читает и записывает доступ к области действия вызывающей стороны (динамическая область видимости).Если присутствует OPTIONAL, то ошибка не возникает, если файл не существует.Если задано RESULT_VARIABLE, то для переменной будет задано полное имя файла, которое было включено, или NOTFOUND, если это не удалось.

Итак, чем это отличается от find_package ()?

1 Ответ

1 голос
/ 02 июня 2019

Можно рассматривать find_package как удобную оболочку вокруг include команды, специально разработанной для поиска пакетов :

  1. find_package() автоматически преобразует имя пакета в файл Find<package>.cmake, который включен.

  2. find_package() автоматически устанавливает некоторые переменные на основе его параметров.Например, переменная <package>_FIND_COMPONENTS будет содержать список запрошенных компонентов.

  3. После возврата включенного файла find_package() может проверить переменную <package>_FOUND и выдает ошибку, если переменная ЛОЖЬ, но пакет ОБЯЗАТЕЛЬНО.

На самом деле, точки 1,3 относятся к режиму MODULE find_package.В режиме CONFIG они заменяются на:

1 '.Имя включенного файла обрабатывается как <package>Config.cmake или <package>-config.cmake, а поиск выполняется с использованием полностью другого алгоритма , чем в режиме MODULE (который, например, include() использует CMAKE_MODULE_PATH переменная).

3 '.После возврата включенного файла find_package() может проверить переменные <package>_FOUND и и найти следующий включаемый файл , который может попытаться снова найти пакет.Если больше никаких включаемых файлов не найдено, и пакет ТРЕБУЕТСЯ, ошибка будет отправлена.

Более подробную информацию о find_package работе можно найти в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...