在 Windows 10 下为 VTK 生成 Makefile 时,Qt mkspecs 的路径错误
Wrong path for Qt mkspecs when generating Makefile for VTK under Windows 10
我目前的任务是在Windows 10下使用(静态(Qt和VTK为应用程序设置工作环境。
我成功安装了 Qt 5.11.1 静态,现在想要构建 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 中检查高级(,以查看一切是否正常,尤其是查看是否可以在那里的某个地方找到通往 mkspecs 的错误路径。没有发现任何特别感兴趣的东西。
有人知道出了什么问题吗?告诉我是否需要其他信息。同时,我将尝试构建其他版本的 VTK,但我不太相信这会解决问题。
我找到了一个我想在这里介绍的解决方案,但我认为这是一种临时方法而不是实际解决方案,我希望看到更好的答案。
我去了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 文件中,因此具有一定的有效性。
虽然这是一个答案,因为它解决了问题,但我真的很想阅读有关最初可能出错的评论。
- Qt VTK交互风格的信号到小部件
- QT在错误的班级中寻找空位
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 如何在Qt C++中更改光标
- 如何在MS Visual Studio 2019中运行QT UI
- QT通过C++添加映射QML项目
- libssh 的函数在构建 libssh 时无法在 Qt 和 cmake 错误中找到
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用Qt C++计算类似Git的SHA1哈希
- Qt focusObjectChanged example?
- 如何在cpp文件之间切换窗口?在Qt中
- Qt和C++:将QLineEdit添加到QTabWidget中
- 从数据库实时显示QT c++中的数据
- Qt Quick-如何仅从c++代码与qml属性交互
- 无法使用Qt Creator在Windows中构建yaml-cpp
- 如何在Qt中取消捕获字符串
- Qt SQLite没有查询或参数计数不匹配
- 在 Windows 10 下为 VTK 生成 Makefile 时,Qt mkspecs 的路径错误