【问题标题】:Wrong path for Qt mkspecs when generating Makefile for VTK under Windows 10在 Windows 10 下为 VTK 生成 Makefile 时 Qt mkspecs 的路径错误
【发布时间】:2019-01-30 19:33:31
【问题描述】:

我当前的任务是在 Windows 10 下为使用(静态)Qt 和 VTK 的应用程序设置工作环境。

我成功安装了 Qt 5.11.1 static,现在想构建 VTK。任何版本的 VTK 都可以,只要它与 Qt 5.11.1 兼容,并且必须构建 Qt 模块 (VTK_Group_Qt)。对于我的版本,我决定使用 VTK 8.1.1,但如前所述,任何版本都可以。

我使用 CMake GUI 配置 VTK,使用 MinGW Makefiles(我使用 MinGW64),它有效。然后我想继续生成Makefile,打开VTK_Group_Qt。 Qt 的路径和版本已经被正确识别:

Qt5Core_DIR       C:/build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Core

Qt5Gui_DIR         C:/build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Gui

Qt5Widgets_DIR C:/build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Widgets

Qt5_DIR               C:/build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5

确保所有这些都存在。之后,我点击生成并收到以下错误:

导入的目标“Qt5::Core”引用文件

    “C:/build_environment/qt-everywhere-src-5.11.1/qtbase/.../qt-everywhere-src-5.11.1/qtbase//mkspecs/win32-g++”

但是这个文件不存在。可能的原因包括:

* 文件被删除、重命名或移动到其他位置。

* 安装或卸载过程未成功完成。

* 安装包出错并包含

    “C:/build_environment/qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Core/qt5CoreConfigExtras.cmake”

但不是它引用的所有文件

现在,我们看到它从 qtbase 向上移动一个文件夹,然后进入它当前所在的文件夹,这当然不是合法路径。也就是说,由于某种原因,它会尝试上升然后再下降,但没有正确数量的文件夹。

我可以尝试移动我的 Qt 安装的内容,以便路径是合法的,但我认为这非常有味道。摆弄一个应该正确的文件夹结构并不是我理解的一个好的解决方案。我宁愿更改 Qt 的 .cmake 文件之一,但就我而言,这更像是一种临时方法,而不是真正的解决方案。

到目前为止,我尝试的一件事是查看所有 CMake 变量(在 CMake GUI 中检查 Advanced),以查看是否一切正常,尤其是查看 mkspecs 的错误路径是否正确在某处找到。没有发现任何特别感兴趣的内容。

有人知道出了什么问题吗?告诉我是否需要其他信息。同时,我会尝试构建其他版本的 VTK,但我不太相信这会解决问题。

【问题讨论】:

    标签: c++ windows qt cmake vtk


    【解决方案1】:

    我找到了一个我想在这里介绍的解决方案,但我认为它是一种临时的方法,而不是一个实际的解决方案,我希望看到一个更好的答案。

    我去了qt-everywhere-src-5.11.1/qtbase/lib/cmake/Qt5Core/并更改了文件Qt5CoreConfigExtrasMkspecDir.cmake(复制后)。

    原始文件包含一行

    set(_qt5_corelib_extra_includes "${_qt5Core_install_prefix}/.../qt-everywhere-src-5.11.1/qtbase//mkspecs/win32-g++")
    

    这会导致错误的路径。我把它改成

    set(_qt5_corelib_extra_includes "${_qt5Core_install_prefix}/mkspecs/win32-g++")
    

    现在可以正常工作了。尽管如此,我对不得不更改 Qt 文件感到不舒服,因为我认为答案是“这个著名的库有错吗?”是“很可能我用错了。”

    可能的解释是我在配置 Qt 时使用了错误的安装前缀,但我不应该被允许在其中放置任何有效的可写路径吗?另外,前缀仍然在 cmake 文件中,因此具有一定的有效性。

    虽然这是一个解决问题的答案,但我真的很想阅读 cmets 了解最初可能出了什么问题。

    【讨论】:

    • 我认为这是一个拼写错误。将其报告为错误。如果 Qt 不存在,它甚至可以创建完整的安装前缀,不过我不记得了。
    • @KubaOber 听取了您的建议并进行了报告。如果有人对结果感兴趣,我的请求在bugreports.qt.io/browse/QTBUG-70189
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 2018-07-08
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2021-12-04
    • 2016-11-28
    相关资源
    最近更新 更多