После установки CMake я не могу найти пакет с `find_package` - PullRequest
0 голосов
/ 04 июня 2018

Я установил библиотеку (SDL) с помощью следующей команды:

cmake --build . --target install

Я прочитал в документации, что установленные пакеты будут регистрироваться в CMAKE_SYSTEM_PREFIX_PATH.

Но когда я распечатываю переменную, она пуста.

В настоящее время я использую Windows, и я прочитал в Интернете, что мне нужно зарегистрировать путь установки в реестре, но это не помогло вообще.

Как мне найти, например, SDL с помощью find_package ()?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Я считаю, что причина того, что это не сработало для вас, заключается в том, что ваша команда find_package предшествовала вашей команде project в вашем файле CMakeLists.txt.Если вы убедитесь, что project - первая команда (после cmake_minimum_required(VERSION <NUM>), то все переменные CMAKE_SYSTEM_*** будут правильно инициализированы:)

Я действительно наткнулся на этот пост после того, как столкнулся с точно такой же проблемой (см.мой комментарий по первому вопросу).Я попробовал совет, опубликованный j4x, используя команду foreach VARIABLES, чтобы напечатать все переменные, и по счастливой случайности вставил его после моей команды project.Я заметил, что CMAKE_SYSTEM_PREFIX_PATH было разумным значением - тогда я переместил код над командой project и заметил, что было напечатано гораздо меньше переменных: P CMAKE_SYSTEM_PREFIX_PATH не было, где его можно увидеть ...

Надеюсьэто работает и для вас!

0 голосов
/ 28 августа 2018

Попробуйте это:

Используя функцию get_cmake_property, следующий цикл выведет все определенные переменные CMake и их значения:

get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
    message(STATUS "${_variableName}=${${_variableName}}")
endforeach()

Для печати переменных среды используйте командный режим CMake:

execute_process(COMMAND "${CMAKE_COMMAND}" "-E" "environment")

Он печатает:

-- CMAKE_SYSTEM_PREFIX_PATH=/usr/local;/usr;/;/usr;/usr/local;/usr/X11R6;/usr/pkg;/opt

(Кредиты Сакра )

Вы можете искать в исходном дереве дляфайл с именем FindSDL*.cmake, затем попробуйте найти этот файл в каталогах CMAKE_SYSTEM_PREFIX_PATH.

Если CMAKE_SYSTEM_PREFIX_PATH по-прежнему пуст, попробуйте найти FindSDL*.cmake на всем вашем компьютере, чтобы проверить, установлены ли файлы где-нибудьcmake знает или пытается добавить этот путь к вашему CMAKE_SYSTEM_PREFIX_PATH.

Вы также можете проверить эту ссылку: Использование SDL2 с CMake

...