CMake find_package()不尊重CMAKE_MODULE_PATH [英] CMake find_package() doesn't respect CMAKE_MODULE_PATH
问题描述
我无法在CMake中检测到软件包(glfw).由于没有root权限,我无法在标准位置安装该库,因此我将其安装在 .local
中:
$ ls〜/.local/lib/cmake/glfw3/glfw3Config.cmake/home/emil/.local/lib/cmake/glfw3/glfw3Config.cmake
我的 CMakeLists.txt
由
cmake_minimum_required(版本3.10.0)项目(测试版本1.0语言C CXX)设置(CMAKE_MODULE_PATH $ {CMAKE_MODULE_PATH}"$ ENV {HOME}/.local")消息("CMAKE_MODULE_PATH:$ {CMAKE_MODULE_PATH}")find_package(需要glfw3 3.2)
我使用下面的标志执行此命令以确保搜索目录输出:
$ cmake -DCMAKE_FIND_DEBUG_MODE = ON ..
这将输出:
CMAKE_MODULE_PATH:/home/emil/.local检查前缀[/]检查文件[/glfw3Config.cmake]检查文件[/glfw3-config.cmake]检查前缀[/usr/]检查文件[/usr/glfw3Config.cmake]检查文件[/usr/glfw3-config.cmake]检查前缀[/opt/thinlinc/]检查文件[/opt/thinlinc/glfw3Config.cmake]检查文件[/opt/thinlinc/glfw3-config.cmake]检查前缀[/usr/local/]检查文件[/usr/local/glfw3Config.cmake]检查文件[/usr/local/glfw3-config.cmake]检查前缀[/usr/bin/X11/]检查文件[/usr/bin/X11/glfw3Config.cmake]检查文件[/usr/bin/X11/glfw3-config.cmake]检查文件[/usr/bin/X11/cmake/glfw3Config.cmake]检查文件[/usr/bin/X11/cmake/glfw3-config.cmake]检查前缀[/snap/]检查文件[/snap/glfw3Config.cmake]检查文件[/snap/glfw3-config.cmake]检查前缀[/opt/puppetlabs/]检查文件[/opt/puppetlabs/glfw3Config.cmake]检查文件[/opt/puppetlabs/glfw3-config.cmake]检查前缀[/home/emil/]检查文件[/home/emil/glfw3Config.cmake]检查文件[/home/emil/glfw3-config.cmake]检查前缀[/usr/X11R6/]检查前缀[/usr/pkg/]检查前缀[/opt/]检查文件[/opt/glfw3Config.cmake]检查文件[/opt/glfw3-config.cmake]CMakeLists.txt:13(find_package)的CMake错误:通过在CMAKE_MODULE_PATH中不提供"Findglfw3.cmake",该项目具有要求CMake查找"glfw3"提供的程序包配置文件,但是CMake找不到一个.
因此CMake似乎在很多地方搜索,包括我的主目录,但不在〜/.local
中搜索.我实际上不确定为什么.我认为 CMAKE_MODULE_PATH
应该添加搜索目录.在我的另一台计算机上,它看起来在那里并在运行相同脚本时找到它.错误的计算机将运行Ubuntu MATE 18.04,而正在运行的计算机将运行Ubuntu 18.04.
CMake版本如下.
$ cmake --versioncmake版本3.10.2
我知道我可以将文件移动到主目录中,但是我不想这样做.
变量 CMAKE_MODULE_PATH
仅帮助 查找 FindXXX.cmake
脚本./p>
要找到 Which I execute with the flag below to ensure search directory output: This outputs: So it seems like CMake searches in a lot of places, including my home directory, but not in CMake version is as below. I understand that I could just move the files to my home directory, but I don't want to do that. Variable For locate 这篇关于CMake find_package()不尊重CMAKE_MODULE_PATH的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋! XXXConfig.cmake
脚本,请设置 CMAKE_PREFIX_PATH
变量.(或$ 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.
~/.local
. I'm actually not sure why. I think CMAKE_MODULE_PATH
is supposed to add search directories. On my other machine it looks there and finds it when running the same script. The erroneous machine runs Ubuntu MATE 18.04 and the working one Ubuntu 18.04.$ cmake --version
cmake version 3.10.2
CMAKE_MODULE_PATH
helps only in locating FindXXX.cmake
scripts.XXXConfig.cmake
script set CMAKE_PREFIX_PATH
variable. (Or some other variable used by find_package
in search algorithm).