我当前的任务是在Windows 10下使用(静态)Qt和VTK为应用程序设置工作环境。
我成功安装了Qt 5.11.1 static,现在想构建VTK。只要兼容Qt 5.11.1,任何版本的VTK都可以,并且必须构建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
确保所有这些都存在。在那之后,我点击了Generate并得到以下错误:
导入的目标“ 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,但是我不太相信这会解决问题。
答案 0 :(得分:2)
我找到了要在此处介绍的解决方案,但我认为这是一种临时解决方案,而不是实际解决方案,希望能得到更好的答案。
我去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文件中,因此具有一定的有效性。
虽然这是自解决问题以来的一个答案,但我真的很想阅读有关最初可能出错的评论。