CMake find_package() 不尊重 CMAKE_MODULE_PATH

2023-12-26

我在 CMake 中检测包 (glfw) 时遇到问题。由于没有 root 权限,我无法将库安装在标准位置,因此我将其安装在.local反而:

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

My 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

我知道我可以将文件移动到我的主目录,但我不想这样做。


多变的CMAKE_MODULE_PATH helps only在定位中FindXXX.cmake脚本。

用于定位XXXConfig.cmake脚本集CMAKE_PREFIX_PATH多变的。 (或者使用的其他一些变量find_package in 搜索算法 https://cmake.org/cmake/help/v3.15/command/find_package.html#id5).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMake find_package() 不尊重 CMAKE_MODULE_PATH 的相关文章

  • WSL gprof 报告零次

    我正在尝试在 Windows 10 上的 WSL 中使用 gprof 我没有预料到会遇到任何困难 因为上次我在 Windows 7 上的 Ubuntu 虚拟盒中使用它时它工作得很好 与以前一样遵循来自https www thegeekstu
  • 从 MySQL 数据库中删除权限

    在您认为这是一个重复的问题之前 我相信我有一个独特的案例 即使它有点愚蠢 几天前 我将 Ubuntu 10 04 服务器上的 MySQL 版本升级到 5 3 3 它领先于 Ubuntu 10 04 版本 今天 我尝试登录 phpMyAdmi
  • 如何将动态链接的应用程序转换为静态链接的应用程序?

    我有一个应用程序 例如 gedit 它是动态链接的 但我没有源代码 所以我不能按我喜欢的方式编译它 我想要做的是将其静态链接并将其移动到没有运行该应用程序所需的库的系统 那么是否可以做到以及如何做到呢 理论上是可能的 您基本上必须执行与动态
  • 尽管 EXPORT_SYMBOL 模块插入时出现“模块中的未知符号”

    我正在尝试编译并插入 r8169 realtek 以太网驱动程序 我的内核版本是 ebin sony uname r 4 2 0 rc3 custom 我的本地磁盘中有相同的完整源代码 用于安装当前的内核 当我运行时该模块编译成功make
  • python os.path.exists() 对于存在的 nfs 挂载目录文件失败

    我基本上有一个用于网站的网络服务器和另一个仅存储文件的网络服务器 文件服务器通过安装其目录之一连接到主服务器 该网站运行 Django 所以我主要处理 python 不管怎样 我似乎遇到了一些问题 文件被报告为不存在 即使它们实际上存在 基
  • 在linux中将数据“广播”到多个进程的规范方法?

    我有一个应用程序需要将数据流从一个进程发送到多个读取器 每个读取器都需要查看自己的流副本 这是相当高的速率 100MB s 并不罕见 因此我希望尽可能避免重复 在我的理想世界中 Linux 应该有支持多个读取器的命名管道 并为常见的单读取器
  • CMake编译java代码

    是否可以使用CMake来编译并运行java代码 从命令行我在终端上编写的命令是 javac classpath theClasspath mainClass java java classpath theClasspath mainClas
  • 移动除一个文件之外的所有文件

    如何移动除一个文件之外的所有文件 我正在寻找类似的东西 mv Linux Old Tux png Linux New 我将旧的东西移动到新的东西文件夹中 除了Tux png 符号代表否定 有一些工具可以完成这项工作吗 如果您使用 bash
  • CMake的execute_process和任意shell脚本

    CMake s execute processcommand 似乎只让你执行一个进程 而不是你可以输入命令 shell 的任意行 问题是 我想使用管道 文件描述符重定向等 但这似乎不可能 另一种选择对我来说会非常痛苦 我认为 我应该怎么办
  • Visual Studio 代码中的“Git:gpg 未能签署数据”

    全新安装 Linux 后 我尝试设置我的环境 并且不断收到Git gpg failed to sign the data在本地提交更改时出错 我使用的是 Visual Studio Code 专有版本 而不是开源版本 gitconfig u
  • 如何在 Ubuntu 16.04 上设置 Docker + PhpStorm + xdebug

    我的问题是当我开始监听端口时 xdebug 不起作用 我认为 PhpStorm 无法与 xdebug 链接 我刚刚得到调试器面板变量不可用 看来 xdebug 没有正确设置 使用的软件及版本 Ubuntu 16 04 LTS Docker
  • 在詹金斯管道作业中将变量传递给bash脚本

    我有一个 Jenkins 管道作业 其中我使用名为 setup sh 的 bash 脚本配置我的环境 如下所示 bin bash export ARCH 1 echo architecture ARCH 在 Jenkins 管道脚本中 我使
  • 参数无效”设置键“net.core.somaxconn”

    我尝试设置Linux内核 编辑后 etc sysctl conf并执行sysctl p它显示错误 Invalid argument setting key net core somaxconn Linux 发行版 Ubuntu 12 04
  • Linux GCC 上 的 C++ 编译问题

    尝试过谷歌并在这里搜索 但没有运气 我正在尝试将一些使用 Windows 的代码移植到 Linux 上 然后我得到了大量的编译错误 我所做的只是 include
  • Pythonlibs3 CMake 和 macOS

    更新2 将以下两行添加到我的 CMake 文件中时 成功找到了 python 3 及其库 这只在终端中工作的原因是因为 CLion 使用其捆绑版本的 CMake 3 6 3 而我的终端使用的更新版本 3 7 2 正确找到了 python F
  • Cmake:在自定义目录中查找 protobuf 包

    我有 cmake 3 10 x 并下载了当前的 protobuf 源 3 6 1 使用 cmake 我创建了 bin 目录 PROTOBUF SOURCE DIR bin 在其中成功构建了该库 下一步我想在我的基于 cmake 的项目中使用
  • 使用 Python for Linux 模拟按键事件

    我正在编写一个脚本来自动运行特定模型 当模型失败时 它会等待用户输入 Enter 键 我可以检测到模型何时失败 但我无法使用 python 在 Linux 上 来模拟按键事件 Windows 有 SendKeys 库来执行此操作 但我想知道
  • 如何使 clion 与以下 make 和 pkg-config 一起工作?

    我有以下简单的 C 程序 它通知我我在 Xfce 中的哪个工作区 我可以成功编译它并通过命令使用它 gcc O2 DWNCK I KNOW THIS IS UNSTABLE o wsndpkg config cflags libs libn
  • 如何安装 Node 和 NPM 以便不必使用 sudo?

    我正在尝试在 Ubuntu 14 04 计算机上设置 Node js 和 NPM 但遇到了一些问题 在我的第一次尝试中 我不断得到EACCES尝试安装软件包时出错 有时甚至使用sudo 所以我彻底卸载了node和npm 现在我正在尝试找出如
  • Python:帮助(numpy)在退出时导致段错误

    我遇到了一个奇怪的现象 在 python 解释器中 我执行以下操作 gt gt gt import numpy gt gt gt help numpy 帮助显示正确 但一旦我按 q 返回解释器 Segmentation fault core

随机推荐

  • 在 Linux 下启动时运行 ASP.NET Core 应用程序

    我想在 Linux 下运行我的 ASP NET Core 解决方案 并在启动时运行结果 来自微软docs https learn microsoft com en us aspnet core host and deploy linux n
  • CustomScrollView 内的 TabView

    用 SliverFillRemaining 包裹 TabBarView 像 Expanded 一样填充剩余的空白空间 会产生以下错误输出 flutter RenderPositionedBox 需要 RenderBox 类型的子代 但收到了
  • 编码为 base64 密钥库文件

    我想对我的 keystore 文件进行编码以在 Gitlab ci 中使用 因此 对于 Base64 编码 我运行以下命令 openssl base64 A in myFile keystore 对于解码 openssl base64 d
  • 如何为 TextView 中的文本更改添加动画效果?

    尝试执行以下操作 animTimeChange AnimationUtils loadAnimation this android R anim slide in left itemTime startAnimation animTimeC
  • 在单个剃刀视图中,如何检索从控制器的不同方法传递的值?

    我正在开发一个基本应用程序 这是主控制器 public ActionResult Index var all context mainz ToList var vm new mainViewModel main lst all return
  • 在 Excel 用户窗体中,如何更新标签的标题?

    我创建了我的第一个无模式UserForm在 Excel 中并在其上放置 ActiveX 标签 如何设置标签的标题 以便它显示其中的内容Sheet1 Range A1 并在单元格 A1 中的值发生变化时自行更新 基本上 我想要Userform
  • Haskell 集合可以保证每个操作的最坏情况范围?

    这种结构对于实时应用程序 例如用户界面 是必要的 用户并不关心单击按钮是否需要 0 1 秒或 0 2 秒 但他们确实关心第 100 次单击是否会强制执行出色的惰性计算并需要 10 秒才能继续 我在读冈崎的论文纯函数式数据结构 http ww
  • Python 在打印变量后打印文本

    所以我想在打印变量后打印一些文本 如下所示 print Blablabla var blablabla 现在看起来像这样 print The enemey gets hit for d damage 我想在打印损坏变量后打印 Hitpoin
  • ole32!COIDTable::ThreadCleanup 中崩溃 ... NetworkItemFactory!FDBackgroundThreadHandler

    自上周以来 Word 和 Excel 经常崩溃 即使是非常简单的文档也是如此 刚才 火狐也崩溃了 我该如何修复它或找到真正的根本原因 我已经使用安装程序修复了 Office 安装 应安装所有常规更新 笔记本电脑每天都会重新启动 我已经配置了
  • 在 IIS 上启用 SSI

    根据这一页 http msdn microsoft com en us library ms525940 28v vs 90 29 aspx 我应该能够 问 如何在 IIS7 上启用 SSI 编辑 哦 我明白我的问题是什么了 我在 VPS
  • git-diff:不考虑行顺序

    我的存储库中有一个由软件程序生成的文件 该程序有时会重新排序该文件上的行 这并不重要 因为行顺序并不重要 问题是 当执行 git diff 时 很难看出任何内容是否真正发生了变化 无论如何 是否有执行不考虑行顺序的差异 或者 如果 git
  • 如何在 Swift 中获取父 ViewController 的类名?

    有没有办法获取当前 子 父VC的类名UIViewController 我的 孩子 VC 推 有两个 父母 UIViewControllers 所以我想知道哪一位是当前的父母 这是一种方法 if let parentVC parent as
  • Vector3 的纬度和经度未在 3D 球体上对齐

    我正在尝试将纬度和经度转换为 Vector3 格式 对于给定的纬度和经度 我想将其转换为 Vector3 其中标记对象将位于此 Vector3 位置 这是我的代码 void createLand double latitude rad la
  • python中在函数中定义函数有什么好处?

    我遇到了这段python代码 粘贴在下面 effbot http effbot org zone re sub htm unescape html我想知道 为什么要在函数中定义函数 import re htmlentitydefs Remo
  • 为什么同步变更操作时还需要同步HashMap.get(key)?

    我用 get put and clear 多个线程对一个 HashMap 进行操作 put and clear 都在一个里面synchronized阻止但是 get 不是 我无法想象这会导致问题 但在我见过的其他代码中 get 几乎总是同步
  • 创建作业时如何指定 OpenShift 镜像

    在 OpenShift 3 3 下 我尝试使用以下命令创建作业oc命令行工具 显然缺乏对作业创建的基于参数的支持 但我无法理解如何使用现有应用程序的图像流 例如 当我的应用程序进行 S2I 构建时 它会推送到app latest图像流 我希
  • Firebase - 类型错误:路径必须是字符串。收到未定义

    我刚刚开始使用 firebase 我不确定 Firebase 的进出 根据我的模糊理解 我已经这样配置了我的应用程序 在主要Index js文件 我需要 const path require path const firebaseConfi
  • MEAN 堆栈 ng-upload-file

    我目前正在使用MEAN js创建一个应用程序 我脚手架一个简单的实体称为Campaign 我希望每个活动都有一张关联的图片 因此 我想改变CRUD接口能够上传一个文件到后端 我注射了ng 文件上传用于创建 FE 的插件Angular 上No
  • SonarQube 报告中 Kotlin 项目的覆盖率为 0%

    我正在设置通过 SonarQube 服务器分析项目 使用的工具集是 科特林 1 3 61 摇篮6 0 1 雅可可0 7 9 声纳Qube 7 5 SonarQube Gradle 插件 2 7 问题是我在 SonarQube 中有 0 0
  • CMake find_package() 不尊重 CMAKE_MODULE_PATH

    我在 CMake 中检测包 glfw 时遇到问题 由于没有 root 权限 我无法将库安装在标准位置 因此我将其安装在 local反而 ls local lib cmake glfw3 glfw3Config cmake home emil