cmake中QT的错误工具链

Posted

技术标签:

【中文标题】cmake中QT的错误工具链【英文标题】:wrong toolchain of QT in cmake 【发布时间】:2018-11-09 12:50:09 【问题描述】:

我正在尝试构建具有构建跨平台能力的项目。 因此,它需要多个版本的 QT 作为其依赖项。更准确地说,它有 3 个版本的 qt:

gcc_64 android_x86 android_armv7

我正在尝试在 linux 上构建,所以我希望选择 gcc_64。 但是当我

find_package(Qt5Widgets REQUIRED)
find_package(Qt5OpenGL REQUIRED)

ccmake 似乎选择了 android_armv7。 我得到的路径如下:

Qt5OpenGL_DIR /opt/apps/Qt/5.6/android_armv7/lib/cmake/Qt5OpenGL

这让我想到一个问题,有没有一种方法可以影响 cmake 以找到特定的替代方案?

如果这取决于指定目标平台/架构/工具链的某个变量,则很可能是设置错误,因此如果您知道可能导致选择错误版本的原因,请指出方向错误的标志。

【问题讨论】:

【参考方案1】:

事实证明,您可以使用 DCMAKE_PREFIX_PATH 操作包含以影响找到的版本。这个 + 清理 cmake 缓存解决了我的问题。

我已将其传递给 cmake:

-DCMAKE_PREFIX_PATH=/opt/apps/Qt/5.6/gcc_64

【讨论】:

昨天,我偶然发现了一个类似的问题。在我的 Windows 10 笔记本电脑上安装 Qt5 和 CMake 后,我尝试准备一个最小的 Qt5 项目。 CMake 抱怨缺少 Qt5,直到我准备了一个环境变量 CMAKE_PREFIX_PATH 和相应的。 Qt5 路径(根据我的预期目标平台,它必须是相应 Qt5 bin 文件夹的父文件夹。)变种。正确地,CMake 开始构建解决方案/项目。

以上是关于cmake中QT的错误工具链的主要内容,如果未能解决你的问题,请参考以下文章

CMake:自定义工具链:CMAKE_AR 和 CMAKE_CXX_ARCHIVE_CREATE

使用 cmake 构建工具链以针对 android 进行交叉编译

CMake 工具链包含多个文件

CLion开发环境的完全解析(QT开发?STM32?顺便速通cmake

CLion开发环境的完全解析(QT开发?STM32?顺便速通cmake

在 Cygwin 或 MinGW 中使用 CMake 和 AVR 工具链