CMake find_package () не уважает CMAKE_MODULE_PATH - PullRequest
2 голосов
/ 31 января 2020

У меня проблемы с обнаружением пакета (glfw) в CMake. Я не могу установить библиотеку в стандартном месте из-за отсутствия root привилегий, поэтому я установил ее в .local вместо:

$ ls ~/.local/lib/cmake/glfw3/glfw3Config.cmake
/home/emil/.local/lib/cmake/glfw3/glfw3Config.cmake

Мой CMakeLists.txt состоит из

cmake_minimum_required(VERSION 3.10.0)
project(test VERSION 1.0 LANGUAGES C CXX)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "$ENV{HOME}/.local")
message("CMAKE_MODULE_PATH: ${CMAKE_MODULE_PATH}")
find_package(glfw3 3.2 REQUIRED)

Который я выполняю с флагом ниже, чтобы обеспечить вывод каталога поиска:

$ cmake -DCMAKE_FIND_DEBUG_MODE=ON ..

Это выводит:

CMAKE_MODULE_PATH: /home/emil/.local
Checking prefix [/]
Checking file [/glfw3Config.cmake]
Checking file [/glfw3-config.cmake]
Checking prefix [/usr/]
Checking file [/usr/glfw3Config.cmake]
Checking file [/usr/glfw3-config.cmake]
Checking prefix [/opt/thinlinc/]
Checking file [/opt/thinlinc/glfw3Config.cmake]
Checking file [/opt/thinlinc/glfw3-config.cmake]
Checking prefix [/usr/local/]
Checking file [/usr/local/glfw3Config.cmake]
Checking file [/usr/local/glfw3-config.cmake]
Checking prefix [/usr/bin/X11/]
Checking file [/usr/bin/X11/glfw3Config.cmake]
Checking file [/usr/bin/X11/glfw3-config.cmake]
Checking file [/usr/bin/X11/cmake/glfw3Config.cmake]
Checking file [/usr/bin/X11/cmake/glfw3-config.cmake]
Checking prefix [/snap/]
Checking file [/snap/glfw3Config.cmake]
Checking file [/snap/glfw3-config.cmake]
Checking prefix [/opt/puppetlabs/]
Checking file [/opt/puppetlabs/glfw3Config.cmake]
Checking file [/opt/puppetlabs/glfw3-config.cmake]
Checking prefix [/home/emil/]
Checking file [/home/emil/glfw3Config.cmake]
Checking file [/home/emil/glfw3-config.cmake]
Checking prefix [/usr/X11R6/]
Checking prefix [/usr/pkg/]
Checking prefix [/opt/]
Checking file [/opt/glfw3Config.cmake]
Checking file [/opt/glfw3-config.cmake]
CMake Error at CMakeLists.txt:13 (find_package):
  By not providing "Findglfw3.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "glfw3", but
  CMake did not find one.

Так что, похоже, поиск CMake во многих местах, включая мой дом каталог, но не в ~/.local. Я на самом деле не уверен, почему. Я думаю, что CMAKE_MODULE_PATH должен добавить каталоги поиска. На моей другой машине он смотрит туда и находит его при запуске того же скрипта. Ошибочная машина работает под управлением Ubuntu MATE 18.04, а рабочая версия Ubuntu 18.04.

CMake-версия указана ниже.

$ cmake --version
cmake version 3.10.2

Я понимаю, что могу просто переместить файлы в свой домашний каталог, но я не хочу этого делать.

1 Ответ

4 голосов
/ 01 февраля 2020

Переменная CMAKE_MODULE_PATH помогает только в поиске FindXXX.cmake сценариев.

Для поиска XXXConfig.cmake набор сценариев CMAKE_PREFIX_PATH переменная. (Или некоторая другая переменная, используемая find_package в алгоритме поиска ).

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