cmake - 告诉 CMake 使用自定义 Find*.cmake 而不是系统范围的一个
问题描述
我想使用从源代码编译并安装在文件夹中的 KWayland 库。我希望我的其他项目使用它。但相反,它使用安装在系统范围内的一个作为包管理器对 KDE 的依赖项。
我尝试在 QtCreator 中设置CMAKE_PREFIX_PATH
并/path/to/my/cmakefiles;/usr
重新配置项目,但它仍然使用/usr
.
解决方案
CMAKE_PREFIX_PATH
示例包的设置ABC
将查找包配置文件,该文件将具有以下包形式之一ABC
:
abc-config.cmake
ABCConfig.cmake
通过设置CMAKE_PREFIX_PATH
,它不会告诉CMake 在别处寻找查找模块(例如:)FindABC.cmake
。
如果你安装了你的包ABC
(在你的例子中是 KWayland),安装的包应该提供了一个你可以使用的包配置文件。所以将CMAKE_PREFIX_PATH
变量指向这个文件:
CMAKE_PREFIX_PATH: /path/to/KWayland/package/config/files
如果没有提供包配置文件,您可以使用查找模块 ( FindABC.cmake
) 将包导入您的项目。要告诉 CMake 在非默认位置查找模块,您需要更新CMAKE_MODULE_PATH
变量:
CMAKE_MODULE_PATH: /path/to/my/cmakefiles
推荐阅读
- ssh - SFTP、SSH 和 SSH 隧道
- reactjs - 跟踪 react useEffect 依赖数组
- javascript - 我想显示发布内容的id,目前是用变量表示的,所以我想用数组索引来显示
- sql - 为什么 FIRST_VALUE 和 LAST_VALUE 不是 SQL 中的聚合函数?
- r - 如何使用虹膜数据绘制这个?
- python-3.x - 获取 TypeError:如果未指定方向,则 key_or_list 必须是列表的实例
- javascript - array.map() 无法按预期渲染
- React 中的组件
- python - 无法在第一个 elif 块之外打印
- python - 为什么“if[i %2==0]”总是正确的?
- shell - 想在ansible playbook中使用lineinfile在文件中插入文本