【问题标题】:CMAKE_PREFIX_PATH does not work as expectedCMAKE_PREFIX_PATH 没有按预期工作
【发布时间】:2020-11-26 21:36:59
【问题描述】:

我正在 Windows、Linux、MacOS、WebAssembly、iOS 和 Android 上编译相同的 Qt/QML 应用程序。 到目前为止,我发现 Qt 的组件检测仅适用于 Windows,无论我是使用它来编译 Windows 版本还是交叉编译到 Android。它在 MacOS 和 Linux 上都不起作用。

我尝试将 CMAKE_PREFIX_PATH 指向 Qt 的安装前缀 (~/Qt/5.15.0/wasm_32/),但它一直在抱怨 QtConfig.cmake。我发现工作的唯一替代方法是传递 -DQt5_DIR 以找到 QtConfig.cmake,但随后它将继续要求至少 10 个 .cmake 文件,我需要使用 _DIR 变量一一传递它们的路径。这样我总是会以一个巨大的命令结束,这是一个主要的烦恼来源。

请注意,我不想使用 apt 或任何其他包管理器安装 Qt。我只想使用 Qt 的安装程序,因为它为我提供了针对多个框架的多个版本的灵活性。

这是 Qt 的问题吗?制作? Ubuntu?

Qt:5.15.0

CMake:3.18.0

Ubuntu:20.04

【问题讨论】:

  • "那么它会继续要求至少 10 个以上的 .cmake 文件,我需要一个一个地传递它们的路径"...这些都是 Qt 相关的路径吗,或其他包依赖项?如果它们是不同位置的不同包,通常这是告诉 CMake where 找到它们的方式。您在每种情况下看到的确切错误消息是什么?
  • 我在这个项目中唯一的依赖是Qt。所有错误如下所示: 通过在 CMAKE_MODULE_PATH 中未提供“FindQt5.cmake”,该项目要求 CMake 查找“Qt5”提供的包配置文件,但 CMake 没有找到。找不到由“Qt5”提供的具有以下任何名称的包配置文件: Qt5Config.cmake qt5-config.cmake 将“Qt5”的安装前缀添加到 CMAKE_PREFIX_PATH 或将“Qt5_DIR”设置为包含上述之一的目录文件。如果“Qt5”提供单独开发....
  • 设置CMAKE_PREFIX_PATH 应该找到包配置文件(.cmake),假设提供了正确的 路径。当 CMake 尝试查找配置文件时,您可以检查基于您提供的路径搜索的 search procedure 附加路径 ~/Qt/5.15.0/wasm_32/。请注意,您应该使用 完整 路径,而不使用 ~ 快捷方式。 .cmake 包配置文件在您的机器上的什么位置?
  • 我确实使用了完整路径。我只是在这里使用了快捷方式。配置文件的完整路径是:/home/[username]/Qt/5.15.0/wasm_32/lib/cmake/Qt5/Qt5Config.cmake 遵循 /(lib/| 的命名约定lib*|share)/cmake/*/

标签: ubuntu cmake qt5


【解决方案1】:

现在我确定我找到了它: 工具链有这个: 设置(仅限CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)

设置 CMAKE_PREFIX_PATH 似乎还不够。我也必须这样做: list(APPEND CMAKE_FIND_ROOT_PATH "~/Qt/5.15.0/wasm_32")

【讨论】:

    最近更新 更多